HUOXIU

LLMをローカルで実行する6つの方法

商用の人工知能と大規模言語モデル(LLM)には、プライバシーという大きな欠点があります。機密データや独自仕様のデータを扱う場合、これらのツールのメリットを享受することはできません。そのため、プライベートLLMをローカルで実行する方法を理解する必要があります。オープンソースモデルは一つの解決策となりますが、独自の課題と利点も存在します。

期待値を設定する

オープンソースソフトウェアには多種多様なものがあり、Metaのような大規模な組織が提供するものから個人の愛好家が開発したものまで、数千ものモデルから選択できます。しかし、これらのモデルを実行するには、いくつかの課題もあります。

  • 十分なメモリや GPU などの強力なハードウェアが必要になる場合があります。
  • オープンソース モデルは継続的に改善されていますが、その機能は、大規模なエンジニア チームのサポートの恩恵を受けているChatGPT などのより洗練された製品にはまだ匹敵しません。
  • すべてのモデルが商用利用に適しているわけではありません。

しかし、Google のドキュメントが指摘しているように、オープンソース モデルとクローズドソース モデル間のギャップは縮まっています。

ハギングフェイスとトランスフォーマー

Hugging Faceは、機械学習と人工知能のDocker Hubのような存在で、多数のオープンソースモデルを提供しています。さらに、Hugging Faceは定期的にモデルのベンチマークを実施し、ユーザーが適切なモデルを選択できるようリーダーボードを提供しています。

Hugging Faceは、LLMをローカルで実行するプロセスを簡素化する「transformers」というPythonライブラリも提供しています。以下の例では、このライブラリを使用して、古いGPT-2 microsoft/DialoGPT-mediumモデルを実行しています。初回実行時に「transformers」はモデルをダウンロードし、5回操作できます。このスクリプトを実行するには、PyTorchもインストールする必要があります。

トランスフォーマーからAutoModelForCausalLMをインポートし、AutoTokenizeをインポートしてトーチを作成します。 
トークナイザー = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium", padding_side='left')
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")# ソース: https://huggingface.co/microsoft/DialoGPT-medium# 5 行チャットしてみましょう for step in range(5): # 新しいユーザー入力をエンコードし、eos_token を追加して、Pytorch でテンソルを返します
new_user_input_ids = tokenizer.encode(input(">> User:") + tokenizer.eos_token, return_tensors='pt') # 新しいユーザー入力トークンをチャット履歴に追加します
bot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids # チャット履歴の合計を1000トークンに制限しながら応答を生成しました。
chat_history_ids = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id) # ボットからの最後の出力トークンをきれいに印刷します
print("DialoGPT: {}".format(tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True))) 

トランスフォーマーの利点

  • 自動モデルダウンロード
  • コードスニペットを提供する
  • 理想的な実験および学習ツール

トランスフォーマーの欠点

  • ML と NLP に関する確かな理解が必要です。
  • コーディングと設定のスキルが必要

ランチェーン

LLMをローカルで実行するもう一つの方法は、LangChainを使用することです。LangChainは、人工知能アプリケーションを構築するためのPythonフレームワークです。サポートされているモデル上にAIアプリケーションを開発するための抽象化とミドルウェアを提供します。例えば、次のコードはmicrosoft/DialoGPT-mediumモデルに質問を投げかけます。

 langchain.llms.huggingface_pipeline から HuggingFacePipeline をインポートします
 hf = HuggingFacePipeline.from_model_id(
model_id="microsoft/DialoGPT-medium", task="テキスト生成", pipeline_kwargs={"max_new_tokens": 200, "pad_token_id": 50256},
)langchain.promptsからPromptTemplateをインポートします
テンプレート = """質問: {question}
答え: 段階的に考えてみましょう。prompt = PromptTemplate.from_template(template)
チェーン = プロンプト | hf
question = "脳波検査とは何ですか?"print(chain.invoke({"question": question})) 

LangChainの利点

  • より便利なモデル管理
  • 実用的なAIアプリケーション開発ツール

LangChainの欠点

  • トランスフォーマーと同じ制限速度
  • アプリケーションのロジック コードを記述するか、適切なユーザー インターフェイスを作成する必要があります。

ラマ.cpp

Llama.cpp は、C および C++ をベースにした LLM 推論エンジンで、Apple チップ用に最適化されており、Meta の Llama2 モデルを実行できます。

リポジトリのクローンを作成してプロジェクトをビルドしたら、Llama.cpp を使用してモデルを実行できます。

 $ ./main -m /path/to/model-file.gguf -p "こんにちは!" 

Llama.cppの利点

  • Pythonベースのソリューションよりも高いパフォーマンス
  • 中規模のハードウェア上で Llama 7B などの大型モデルをサポートします。
  • Llama.cpp 経由で推論を実行しながら、他の言語を使用して AI アプリケーションを構築できるようにするバインディングを提供します。

Llama.cppの欠点

  • 限定的なモデルサポート
  • ビルドツールが必要

ラマファイル

Mozilla によって開発された Llamafile は、LLM を実行するためのユーザーフレンドリーな代替手段を提供します。Llamafile は、その移植性と単一ファイルの実行ファイルを作成できることで知られています。

llamafile と GGUF 形式のモデルをダウンロードしたら、次のコマンドを使用してローカル ブラウザー セッションを開始できます。

 $ ./llamafile -m /path/to/model.gguf 

Llamafileの利点

  • Llama.cpp と同じ速度の利点
  • モデルを埋め込んだ単一の実行可能ファイルを作成できます。

Llamafileの欠点

  • このプロジェクトはまだ初期段階です。
  • すべてのモデルをサポートしているわけではなく、Llama.cpp でサポートされているモデルのみをサポートしています。

オラマ

Ollamaは、Llama.cppやLlamafileよりもユーザーフレンドリーな代替手段です。実行ファイルをダウンロードして、マシンにサービスをインストールできます。インストール後、ターミナルを開いて以下を実行してください。

 $ ollama で llama2 を実行

オラマの利点

  • インストールと使用が簡単
  • イラマやビクーニャのモデルを実行できます。
  • 非常に速い走行速度

オラマの欠点

  • 限定的なモデルライブラリを提供する
  • 自己管理モデルでは、独自のモデルを再利用することはできません。
  • LLM 実行のオプションを調整できません
  • Windows バージョンはまだ利用できません。

GPT4ALL

GPT4ALLは、直感的なGUIを備えた使いやすいデスクトップアプリケーションです。ローカルモデル実行をサポートし、APIキーを介してOpenAIに接続できます。重要な機能として、ローカルドキュメントのコンテキストを処理できるため、プライバシーが確保されます。

GPT4ALLの利点

  • ユーザーフレンドリーなUIを備えた代替品
  • さまざまな計画モデルをサポート

GPT4ALLの欠点

  • 限られたモデル選択
  • 一部のモデルには商用利用に制限があります。

結論は

LLMをローカルで実行するための適切なツールの選択は、ニーズと専門知識によって異なります。GPT4ALLのようなユーザーフレンドリーなアプリケーションから、Llama.cppのようなより高度な技術を備えたもの、そしてPythonベースのソリューションまで、様々な選択肢があります。オープンソースモデルが追いつきつつあり、データとプライバシーをより適切に制御できることは明らかです。これらのモデルが発展するにつれて、ChatGPTのような製品と競合する可能性も十分にあります。