|
商用の人工知能と大規模言語モデル(LLM)には、プライバシーという大きな欠点があります。機密データや独自仕様のデータを扱う場合、これらのツールのメリットを享受することはできません。そのため、プライベートLLMをローカルで実行する方法を理解する必要があります。オープンソースモデルは一つの解決策となりますが、独自の課題と利点も存在します。 期待値を設定するオープンソースソフトウェアには多種多様なものがあり、Metaのような大規模な組織が提供するものから個人の愛好家が開発したものまで、数千ものモデルから選択できます。しかし、これらのモデルを実行するには、いくつかの課題もあります。
しかし、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))) トランスフォーマーの利点
トランスフォーマーの欠点
ランチェーン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の利点
LangChainの欠点
ラマ.cppLlama.cpp は、C および C++ をベースにした LLM 推論エンジンで、Apple チップ用に最適化されており、Meta の Llama2 モデルを実行できます。 リポジトリのクローンを作成してプロジェクトをビルドしたら、Llama.cpp を使用してモデルを実行できます。 $ ./main -m /path/to/model-file.gguf -p "こんにちは!" Llama.cppの利点
Llama.cppの欠点
ラマファイルMozilla によって開発された Llamafile は、LLM を実行するためのユーザーフレンドリーな代替手段を提供します。Llamafile は、その移植性と単一ファイルの実行ファイルを作成できることで知られています。 llamafile と GGUF 形式のモデルをダウンロードしたら、次のコマンドを使用してローカル ブラウザー セッションを開始できます。 $ ./llamafile -m /path/to/model.gguf Llamafileの利点
Llamafileの欠点
オラマOllamaは、Llama.cppやLlamafileよりもユーザーフレンドリーな代替手段です。実行ファイルをダウンロードして、マシンにサービスをインストールできます。インストール後、ターミナルを開いて以下を実行してください。 $ ollama で llama2 を実行 オラマの利点
オラマの欠点
GPT4ALLGPT4ALLは、直感的なGUIを備えた使いやすいデスクトップアプリケーションです。ローカルモデル実行をサポートし、APIキーを介してOpenAIに接続できます。重要な機能として、ローカルドキュメントのコンテキストを処理できるため、プライバシーが確保されます。 GPT4ALLの利点
GPT4ALLの欠点
結論はLLMをローカルで実行するための適切なツールの選択は、ニーズと専門知識によって異なります。GPT4ALLのようなユーザーフレンドリーなアプリケーションから、Llama.cppのようなより高度な技術を備えたもの、そしてPythonベースのソリューションまで、様々な選択肢があります。オープンソースモデルが追いつきつつあり、データとプライバシーをより適切に制御できることは明らかです。これらのモデルが発展するにつれて、ChatGPTのような製品と競合する可能性も十分にあります。 |