はじめに
以前に以下のような紹介をしました。
今回はこれの続きで、ローカルLLMを使える環境をオフラインで作成したので手順を共有できればと思います。
LLMの選定とダウンロード
まず、使用するモデルを選定し、オンライン環境でダウンロードします。ここでは、日本語に対応したjapanese-stablelm-3b-4e1t-instruct-ggufを例に進めます。
ダウンロードしたモデルデータは、オフライン環境へ移行するためにUSBなどの移動可能なメディアに保存します。
必要なライブラリとツールの準備
LLMの実行に必要なライブラリ等をpip download
を用いて行います。
pip download -d ./packages -r requirements.txt
requirements.txt
には以下を含めます。
scikit-build-core>=0.5.1
pathspec>=0.10.1
pyproject-metadata>=0.5
cmake>=3.21
llama-cpp-python
この段階で、インストールを仮想環境にしておくと、良いです。このときに、「特定のライブラリとの依存関係を解決できません」といったエラーが出た場合は、適宜requirements.txt
に追記して解決してください。
上記でバージョン指定しているライブラリは私の環境で行った時に追記したものになります。
pip install --no-index --find-links=./packages -r requirements.txt
また、LLMのコンパイルにはcmakeが必要ですので、CMakeの公式サイトからインストーラーをダウンロードしておきます。
オフライン環境でのセットアップ
オフラインPCにて、以下の手順で環境を構築します。
- CMakeのインストール: ダウンロードしたインストーラーを実行してCMakeをセットアップします。
- Pythonライブラリのインストール:
pip install --no-index --find-links=./packages -r requirements.txt
このステップで問題なく完了すれば、環境はLLMの実行にほぼ準備完了です。
LLMの動作テスト
セットアップが完了したら、以下のPythonスクリプトでモデルが正しく動作するか確認します。
from llama_cpp import Llama
class LlamaAdapter():
def __init__(self):
self.llm = Llama(model_path='./japanese-stablelm-3b-4e1t-instruct-q4_K_M.gguf')
def infer(self):
output = self.llm(
"### 指示: 東京の名所を一つ紹介せよ \n ### 応答:",
max_tokens=64,
)["choices"][0]["text"]
return output
if __name__ == '__main__':
llama = LlamaAdapter()
print(llama.infer())
このスクリプトは、指定されたプロンプトに基づいてテキスト生成を行います。正常に動作すれば、セットアップは成功です。
以上