Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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のインストールを行ってください。

Macに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のインストールを行ってください。

Macに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)

...