...
Code Block |
---|
mkdir -p llmtest cd llmtest/ |
日本語LLMのモデルダウンロード
下記の日本語LLMのモデルをダウンロードします。Linux環境では、wgetコマンドを用います。日本語LLMのモデルをなんらかの取り組みや講義でダウンロードしている場合は、ダウンロード済みのモデルを作業用ディレクトリに移動してください。
日本語LLMのモデルをダウンロードしていない場合は、作業用ディレクトリで、次のコマンドを実行します。
Linux環境では、wgetコマンドを用います。「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」と「ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」、どちらかをダウンロードします。
2023年11月現在、「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」としました。7GB近く(2023年11月現在、6.8GB)あるため、ダウンロードに数十分から数時間かかります。
Code Block |
---|
wget https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf/resolve/main/ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf |
Python用仮想環境を作ります
次のコマンドを実行します。ここでは、myvenvという名前にします。
Code Block |
---|
python3 -m venv myvenv
source myvenv/bin/activate |
llama-cpp-pythonをインストールします
次のコマンドを実行します。
Code Block |
---|
pip install llama-cpp-python |
インストール成功のメッセージ(インストール作業を行った時期により、表示されるバージョン番号が異なるので注意)
Code Block |
---|
Successfully installed diskcache-5.6.3 llama-cpp-python-0.2.18 numpy-1.26.2 typing-extensions-4.8.0 |
OpenAI互換のAPIサーバー機能の追加
次のコマンドを実行します。
...
7GB近くのダウンロードを待つ時間がない場合は、性能が落ちますが、半分以下の3GB近くのモデルをダウンロードする手もあります。「ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」
Code Block |
---|
wget https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf/resolve/main/ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf |
Python用仮想環境を作ります
次のコマンドを実行します。ここでは、myvenvという名前にします。
Code Block |
---|
python3 -m venv myvenv
source myvenv/bin/activate |
llama-cpp-pythonをインストールします
次のコマンドを実行します。
Code Block |
---|
pip install llama-cpp-python[server] |
インストール成功のメッセージ(インストール作業を行った時期により、表示されるバージョン番号が異なるので注意)
Code Block |
---|
Successfully installed annotateddiskcache-types-05.6.0 anyio-3.7.1 click-8.1.7 exceptiongroup-1.1.3 fastapi-0.104.1 h11-0.14.0 idna-3.4 pydantic-2.5.1 pydantic-3 llama-cpp-python-0.2.18 numpy-1.26.2 typing-extensions-4.8.0 |
OpenAI互換のAPIサーバー機能の追加
次のコマンドを実行します。
Code Block |
---|
pip install llama-cpp-python[server] |
インストール成功のメッセージ(インストール作業を行った時期により、表示されるバージョン番号が異なるので注意)
Code Block |
---|
Successfully installed annotated-types-0.6.0 anyio-3.7.1 click-8.1.7 exceptiongroup-1.1.3 fastapi-0.104.1 h11-0.14.0 idna-3.4 pydantic-2.5.1 pydantic-core-2.14.3 pydantic-settings-2.1.0 python-dotenv-1.0.0 sniffio-1.3.0 sse-starlette-1.6.5 starlette-0.27.0 starlette-context-0.3.6 uvicorn-0.24.0.post1 |
APIサーバーの起動
...
モデルを指定して起動
「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」と「ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」のどちらか一方、ダウンロードしてある方で、APIサーバーを起動します。
ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf の場合
localhost以外からでも、IPアドレスでも利用できるように、--host 0.0.0.0 を指定し、次のコマンドを実行します。
Code Block |
---|
python3 -m llama_cpp.server --host 0.0.0.0 --model ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf |
実行結果 ( 膨大なので、重要な最後の方を表示 )
...
ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf の場合
localhost以外からでも、IPアドレスでも利用できるように、--host 0.0.0.0 を指定し、次のコマンドを実行します。
Code Block |
---|
python3 -m llama_cpp.server --host 0.0.0.0 --model ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf |
実行結果 ( 膨大なので、重要な最後の方を表示 )
Code Block |
---|
llm_load_print_meta: n_yarn_orig_ctx = 4096 llm_load_print_meta: rope_finetuned = unknown llm_load_print_meta: model type = 7B llm_load_print_meta: model ftype = mostly Q8_0 llm_load_print_meta: model params = 6.85 B llm_load_print_meta: model size = 6.77 GiB (8.50 BPW) llm_load_print_meta: general.name = ELYZA-japanese-Llama-2-7b-fast-instruct llm_load_print_meta: BOS token = 1 '<s>' llm_load_print_meta: EOS token = 2 '</s>' llm_load_print_meta: UNK token = 0 '<unk>' llm_load_print_meta: LF token = 13 '<0x0A>' llm_load_tensors: ggml ctx size = 0.11 MiB llm_load_tensors: mem required = 6937.01 MiB ................................................................................................. llama_new_context_with_model: n_ctx = 2048 llama_new_context_with_model: freq_base = 10000.0 llama_new_context_with_model: freq_scale = 1 llama_new_context_with_model: kv self size = 1024.00 MiB llama_build_graph: non-view tensors processed: 740/740 llama_new_context_with_model: compute buffer total size = 159.07 MiB AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | INFO: Started server process [14436] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) |
Macをお使いの場合 ( Intel Mac / Apple シリコン Mシリーズ )
日本語LLMのモデルダウンロード
...
quit) |
Macをお使いの場合 ( Intel Mac / Apple シリコン Mシリーズ )
日本語LLMのモデルダウンロード
下記の日本語LLMのモデルをダウンロードします。日本語LLMのモデルをなんらかの取り組みや講義でダウンロードしている場合は、スキップして次の「ターミナルアプリを起動」に進んでください。
SafariやGoogle Chrome等のWebブラウザで、下記にアクセスすればダウンロードが始まります。
2023年11月現在、「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」としました。7GB近く(2023年11月現在、6.8GB)あるため、ダウンロードに数十分から数時間かかります。
Code Block |
---|
https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf/resolve/main/ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf |
7GB近くのダウンロードを待つ時間がない場合は、性能が落ちますが、半分以下の3GB近くのモデルをダウンロードする手もあります。「ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」
Code Block |
---|
wget https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf/resolve/main/ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf |
お使いのMacのダウンロードフォルダに保存します。どこにダウンロードされたかは、ご自分のMacなのですから把握しておきましょう。
ターミナルアプリを起動
ターミナルアプリを起動します。アプリケーションフォルダ内のユーティリティフォルダに格納されています。Macを使って、プログラミングする人は1度は使ったことがあるはず。
...
Pythonのインストール
昔は別として、現在のMacには標準でPythonが入っていないため、自分でPythonをインストールする必要があります。既にPython3系で3.8以上が入っている場合は、飛ばしてください。
定番のHomebrewを使います。以下を参考に、HomebrewによるPythonのインストールを行ってください。
作業用ディレクトリの作成
次のコマンドを実行します。
Code Block |
---|
mkdir -p llmtest |
LLMを作業用ディレクトリにコピー
次のコマンドを実行し、作成した作業用ディレクトリに、ダウンロードしておいたLLMをコピーします。
LLMは、ダウンロードフォルダにダウンロードした前提にしています。
ダウンロードした場所が異なる場合は、Downloads/ を適切なパスに読み替えてください。
ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.
...
gguf の場合
Code Block |
---|
cp Downloads/ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf |
お使いのMacのダウンロードフォルダに保存します。どこにダウンロードされたかは、ご自分のMacなのですから把握しておきましょう。
ターミナルアプリを起動
ターミナルアプリを起動します。アプリケーションフォルダ内のユーティリティフォルダに格納されています。Macを使って、プログラミングする人は1度は使ったことがあるはず。
...
Pythonのインストール
昔は別として、現在のMacには標準でPythonが入っていないため、自分でPythonをインストールする必要があります。既にPython3系で3.8以上が入っている場合は、飛ばしてください。
定番のHomebrewを使います。以下を参考に、HomebrewによるPythonのインストールを行ってください。
作業用ディレクトリの作成
次のコマンドを実行します。
Code Block |
---|
mkdir -p llmtest/ |
LLMを作業用ディレクトリにコピー
...
ELYZA-japanese-Llama-2-7b-fast-instruct-
...
q2_
...
K.gguf の場合
Code Block |
---|
cp Downloads/ELYZA-japanese-Llama-2-7b-fast-instruct-q8q2_0K.gguf llmtest/ |
Python用仮想環境の作成
...
インストール成功のメッセージ(インストール作業を行った時期により、表示されるバージョン番号が異なるので注意)
Code Block |
---|
Successfully installed annotated-types-0.6.0 anyio-3.7.1 click-8.1.7 fastapi-0.104.1 h11-0.14.0 idna-3.4 pydantic-2.5.2 pydantic-core-2.14.5 pydantic-settings-2.1.0 python-dotenv-1.0.0 sniffio-1.3.0 sse-starlette-1.8.1 starlette-0.27.0 starlette-context-0.3.6 uvicorn-0.24.0.post1 |
...
installed annotated-types-0.6.0 anyio-3.7.1 click-8.1.7 fastapi-0.104.1 h11-0.14.0 idna-3.4 pydantic-2.5.2 pydantic-core-2.14.5 pydantic-settings-2.1.0 python-dotenv-1.0.0 sniffio-1.3.0 sse-starlette-1.8.1 starlette-0.27.0 starlette-context-0.3.6 uvicorn-0.24.0.post1 |
APIサーバーの起動
モデルを指定して起動
「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」と「ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」のどちらか一方、ダウンロードしてある方で、APIサーバーを起動します。
ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf の場合
localhost以外からでも、IPアドレスでも利用できるように、--host 0.0.0.0 を指定し、次のコマンドを実行します。
Code Block |
---|
python3 -m llama_cpp.server --host 0.0.0.0 --model ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf |
ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf の場合
localhost以外からでも、IPアドレスでも利用できるように、--host 0.0.0.0 を指定し、次のコマンドを実行します。
Code Block |
---|
python3 -m llama_cpp.server --host 0.0.0.0 --model ELYZA-japanese-Llama-2-7b-fast-instruct-q8q2_0K.gguf |
実行結果 ( 膨大なので、重要な最後の方を表示 )
Code Block |
---|
llm_load_print_meta: n_yarn_orig_ctx = 4096 llm_load_print_meta: rope_finetuned = unknown llm_load_print_meta: model type = 7B llm_load_print_meta: model ftype = mostly Q8_0 llm_load_print_meta: model params = 6.85 B llm_load_print_meta: model size = 6.77 GiB (8.50 BPW) llm_load_print_meta: general.name = ELYZA-japanese-Llama-2-7b-fast-instruct llm_load_print_meta: BOS token = 1 '<s>' llm_load_print_meta: EOS token = 2 '</s>' llm_load_print_meta: UNK token = 0 '<unk>' llm_load_print_meta: LF token = 13 '<0x0A>' llm_load_tensors: ggml ctx size = 0.11 MiB llm_load_tensors: mem required = 6937.01 MiB ................................................................................................. llama_new_context_with_model: n_ctx = 2048 llama_new_context_with_model: freq_base = 10000.0 llama_new_context_with_model: freq_scale = 1 llama_new_context_with_model: kv self size = 1024.00 MiB llama_build_graph: non-view tensors processed: 740/740 llama_new_context_with_model: compute buffer total size = 159.07 MiB AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | INFO: Started server process [14436] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) |
...