初めに
プライベートではChatGPT4を積極的に利用しておりますが、いくつかの不満点も抱えておりました。そんな中、ローカル環境で高性能なモデル「Orion-14B」がリリースされたと聞き、試しに使ってみることにしました。
なお、最初に結論を書いてしまいますが、「Orion-14B」を使用しても「ChatGPT4」で感じていた不満は解消されなく、「ChatGPT4」の強さを思い知らされた・・といった感じです。
しかし、個人でも最新モデルを容易に試せるという点で、今回の試行内容をご紹介いたします。
Orion-14Bとは?
ChatGPT4様による解説
Orion-14BはOrionStarAIによって開発された大規模な多言語対応の言語モデルシリーズです。このモデルは、14億のパラメータを持つ基礎モデルと、それに関連するいくつかの特化モデルから構成されています。これらのモデルには、チャットモデル、長文テキストモデル、量子化モデル、RAG微調整モデル、エージェント微調整モデルなどが含まれます。 Orion-14Bの基礎モデルは、2.5兆トークンの多様なコーパス上でトレーニングされ、そのデータは英語、中国語、日本語、韓国語などのテキストから収集されています。このモデルは、様々な言語で優れた性能を示しています。また、Orion-14Bには会話アプリケーションやその他の特定の用途に合わせて微調整されたモデルシリーズも含まれています。評価結果によると、Orion-14Bは多くのタスクで最先端の性能を達成しているとされています。
参考リンク
https://github.com/OrionStarAI/Orion
https://huggingface.co/OrionStarAI/Orion-14B-LongChat
下準備 Google Colabを契約する
無償で使用できる範囲では利用できないため、まず契約からとなります。
が、そこまでのGoogle Colabヘビーユーザーではないため、
「Pay As You Go」「100 Colab コンピューティング ユニット¥1,072」
を購入して今回は試しました。
月額契約をしなくても使いたい時だけGoogle Colabを使えるのは非常に助かりますね。
https://colab.research.google.com/signup/pricing?hl=ja
初期化部分
最高レベルの性能がどれくらい出るか知りたいため、量子化モデルでは試さずに一番性能がよさそうな?
「Orion-14B-LongChat」で試行します。
そのためには、大量のリソースが必要となるため、Google Colabのランタイムは、「A100 GPU」を選択します。
A100インスタンスにつなげたら、下のノートブックを実行します。
モデルのダウンロードにかなりの時間がかかります。
!pip install -U transformers accelerate bitsandbytes !pip install -U sentencepiece flash_attn autoawq !pip install -U torch-sdp import torch from transformers import AutoModelForCausalLM, AutoTokenizer from transformers.generation.utils import GenerationConfig tokenizer = AutoTokenizer.from_pretrained( "OrionStarAI/Orion-14B-LongChat", use_fast=False, trust_remote_code=True ) model = AutoModelForCausalLM.from_pretrained( "OrionStarAI/Orion-14B-LongChat", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True ) model.generation_config = GenerationConfig.from_pretrained( "OrionStarAI/Orion-14B-LongChat" )
質問編
こんな単純なコードで使用できます。
messages = [ {"role": "user", "content": """ logstashのメモリ設定状況をしりたいです。 curlで調べる方法をおしえてください。9600で調べるやつありましたよね? """} ] response = model.chat(tokenizer, messages, streaming=False) print(response)
返ってきた答えはこちら
はい、curlでログを表示させる方法があります。 curl -i http://localhost:9600/_cat/var?v=true このコマンドを実行すると、サーバーのメモリ使用量が表示されます。 また、`-i`オプションを指定することで、ヘッダ情報も表示されます。 curl -i http://localhost:9600/_cat/var?v=true&h=memory このコマンドを実行すると、サーバーのメモリ使用量とヘッダ情報が表示されます。 以上です。
結果は残念ながら、明らかな誤りが含まれています。
これはChatGPT4による回答で、非常に有用な内容です。
ぱっといろんなことが思い出せなくなってきている中年エンジニアにはとてもありがたいです。
もっと簡単なことも頼んでみましょう。
ローカルのファイル名一覧(拡張子無し)を作ってお願いします。
# メッセージリストの準備 messages = [ {"role": "user", "content": """powershellで、特定フォルダのファイル名一覧をください。拡張子は抜いてください"""} ] # 推論の実行 response = model.chat(tokenizer, messages, streaming=False) print(response)
それっぽい結果が出ました。
Get-ChildItem -Path "C:\test" | Select-Object -Property Name, FullName | Where-Object {$_.FullName -ne $null} | ForEach-Object {$_.Name -replace '\.',''}
が、実際にこれを実行してみると拡張子を取り除くという要件が満たせておらず、ただ拡張子前の「.」を取り除くだけのコードとなっています。
ChatGPT4様の場合
powershellで、特定フォルダのファイル名一覧をください 拡張子は抜いてください
えっと、jsonにするパターンも
簡潔な質問にも丁寧に回答しています。
まとめ
ChatGPT4を上回るローカルLLM(Large Language Model)が存在すれば大いに助かるという期待を持ち、今回の試用に臨みましたが、残念ながら期待した成果は得られませんでした。しかし、この分野の進歩は著しく速いため、今後も定期的に有望なモデルを探し、その可能性を探っていきたいと思います。
執筆:@miura.toshihiko、レビュー:@yamashita.tsuyoshi
(Shodoで執筆されました)