【Llama3 】日本語モデル導入方法

はじめに

https://huggingface.co/mmnga/rinna-llama-3-youko-8b-gguf

Rinnaプロジェクトのyoukoモデルの量子化版(llama3日本語量子化モデル)が、有志の方によって配布されていた。軽量のモデルで、その精度を検証したい。 量子化モデルは、Q1からQ8まで多数種類が展開されていたが、Q4_K_Mがバランスいいとのことで、それを使用していきます。

DockerにてOllama導入

Docker Hubのollama/ollamaイメージを使ってDockerで起動する手順は、以下の通りです。

  1. Dockerインストール

Dockerがまだインストールされていない場合は、[公式サイト](https://www.docker.com/get-started/)にアクセスして、インストール手順に従ってください。

  1. Docker Hubからイメージを取得

ターミナルを開き、次のコマンドを実行してollama/ollamaイメージをプルします。

  1. コンテナを起動

イメージのプルが完了したら、次のコマンドでコンテナを起動します。-dオプションはデタッチモードでの起動を意味します(バックグラウンド実行)。

  1. ポートのマッピングを行って、起動する場合

もし、コンテナ内のアプリケーションにホストからアクセスしたい場合は、ポートを指定して実行することができます。例えば、ホストのポート8080をコンテナのポート80にマッピングする場合は、次のコマンドを使用します。

マッピングについて、コマンドの説明
  1. コンテナの動作確認

正常に起動しているか確認するために、次のコマンドでコンテナの状態を確認します。

  1. コンテナにアクセスする

コンテナにアクセスしたい場合は、次のコマンドでbashセッションを開けます。

これで、ollamaがDocker上で動作するはずです。 これは、つまるところ、こののコマンドで、コンテナ内に入った状態になります。

  1. コンテナを止める場合

動作結果

と出てきます。そしたら、Ollamaのコマンドを打ってみましょう

そうすると、

このようにコマンド一覧が確認できます。Ollamaのコンテナ内で使えるコマンドがいくつか表示されていますね。

ここから、「run」コマンドを使用してモデルを実行する必要があります。ここからの手順としては、次のようにOllamaの「run」コマンドを使って、言語モデルを起動してみましょう。本題まで、飛ばしてもらって大丈夫です。

簡単なllama2モデル起動手順 (本題まで飛ばして大丈夫です。)

1. モデルを取得する

まず、モデルがコンテナ内にあるかどうか確認する必要があります。モデルがない場合は、「pull」コマンドを使って取得できます。例えば、次のようにモデルをプルします:

このコマンドで、llama2モデルを取得できます(使用するモデルは目的に応じて変更してください)。

2. モデルを実行する

モデルを取得したら、「run」コマンドを使ってモデルを実行します。以下のようにコマンドを実行してください:

これで、Ollamaが指定したモデルを使って動作を開始します。モデルが起動すると対話が可能になります。

3. モデルの状態を確認する

もし、どのモデルが起動しているかを確認したい場合は、以下のコマンドを使います:

これにより、現在実行中のモデルのリストを確認できます。

4. モデルを停止する

モデルを停止したい場合は、「stop」コマンドを使います。例えば、llama2を停止するには次のようにします:

まず、Llama 2のモデルをプルし、それを実行して対話する場合の具体的な流れは次のようになります:

この後、プロンプトが表示されたら対話を始められます。runを使うと、対話型で入力を行い、応答を受け取ることができます。

(本題)日本語版量子化モデルを使用してみよう!

rinna/llama-3-youko-8bモデルを使用する

rinna/llama-3-youko-8bモデルをOllamaで使用するためには、Modelfileを利用してカスタムモデルを定義する必要があります。以下に、具体的な手順を示します。今回は、軽量な量子化モデルを使用したいので、下記にアクセスします。

https://huggingface.co/mmnga/rinna-llama-3-youko-8b-gguf

モデルファイルの種類を指定します。(Q4_K_M) 。 容量的に問題なければ、ダウンロードをクリック。

Modelfile(設定ファイル)の作成手順

  • Modelfileの作成 (Ollamaを動かすうえでの設定ファイルのこと) まず、Hugging Faceのモデルを使うために、OllamaのModelfileを作成します。Modelfileは、Ollamaがモデルを認識して扱うための設定ファイルです。
  • Modelfileの編集
  • ベースモデルファイル”rinna-llama-3-youko-8b-Q4_K_M.gguf”をDockerへコピー
  • モデルの作成

手順1: コンテナ内にModelfileを作成する

コンテナ内に入っている状態でModelfileを作成します。次の手順に従ってください。

  1. Dockerコンテナ内にいることを確認する

まず、Dockerコンテナ内にいることを確認します。コンテナ内に入るには、次のコマンドを使用します。

このコマンドで、コンテナ内に入った状態になります。

  1. Modelfileを作成するディレクトリを決める

コンテナ内でModelfileを作成する場所を決めます。例えば、/modelsディレクトリにModelfileを作成するとしましょう。

これで、/modelsディレクトリが作成され、そのディレクトリに移動しました。

  1. Modelfileを作成する

次に、Modelfileという名前のファイルを作成します。このために、nanoviといったテキストエディタを使います。ここではnanoを使った例を示しますが、viを使っても問題ありません。

※nanoインストール方法について

もしnanoを使いたい場合、以下のコマンドでnanoをインストールすることができます。ただし、コンテナの環境によってはインストールが許可されていない場合があります。

手順2: Modelfileの編集(nanoエディタ->ない人はインストール)

ファイルが開けたら、以下のようにファイルを編集します

Ollama モデル ファイルの設定要件
命令説明
FROM(必須)使用する基本モデルを定義します。
PARAMETEROllama がモデルを実行する方法のパラメータを設定します。
TEMPLATEモデルに送信される完全なプロンプト テンプレート。
SYSTEMテンプレートに設定されるシステム メッセージを指定します。
ADAPTERモデルに適用する (Q)LoRA アダプターを定義します。
LICENSE法的ライセンスを指定します。
MESSAGEメッセージ履歴を指定します。
PARAMETERについて
パラメータ説明値のタイプ使用例
mirostat周期性を制御するためのMirostatサンプリングを有効にする (デフォルト: 0, 0 = 無効, 1 = Mirostat, 2 = Mirostat 2.0)intmirostat 0
mirostat_eta生成されたテキストからのフィードバックに対するアルゴリズムの反応速度を制御 (デフォルト: 0.1)floatmirostat_eta 0.1
mirostat_tau出力の一貫性と多様性のバランスを制御 (デフォルト: 5.0)floatmirostat_tau 5.0
num_ctx次のトークンを生成するために使用するコンテキストウィンドウのサイズを設定 (デフォルト: 2048)intnum_ctx 4096
repeat_last_n繰り返しを防ぐためにモデルが戻る長さを設定 (デフォルト: 64, 0 = 無効, -1 = num_ctx)intrepeat_last_n 64
repeat_penalty繰り返しに対するペナルティの強さを設定 (デフォルト: 1.1)floatrepeat_penalty 1.1
temperatureモデルの温度を設定 (デフォルト: 0.8)floattemperature 0.7
seed生成に使用する乱数シードを設定 (デフォルト: 0)intseed 42
stop停止シーケンスを設定 (複数の停止パターンを指定可能)stringstop “AI assistant:”
tfs_z出力から確率の低いトークンの影響を減らすためにテイルフリーサンプリングを使用 (デフォルト: 1)floattfs_z 1
num_predictテキスト生成時の最大トークン数を設定 (デフォルト: 128, -1 = 無限生成, -2 = コンテキストを満たす)intnum_predict 42
top_kナンセンスな生成を防ぐために使用 (デフォルト: 40)inttop_k 40
top_ptop-kと連携して動作 (デフォルト: 0.9)floattop_p 0.9
手順3 :ベースモデルファイルをローカルからコンテナにコピー

一度、Exitコマンドでコンテナから抜けましょう。

  1. ダウンロードしたrinna-llama-3-youko-8b-Q4_K_M.ggufファイルをコンテナ内の/modelsディレクトリにコピーします。

  1. ファイルが正しくコピーされたか確認

コンテナ内に再度アクセスして、ファイルが正しく配置されているか確認します。

rinna-llama-3-youko-8b-Q4_K_M.ggufが表示されていれば、正しくコピーされています。

これで、Modelfileで指定したモデルファイルのパスと実際のファイルの配置が一致しますので、次の手順でモデルを作成してください。モデルファイルが正しく配置されているのを確認してから、次に進みましょう。

モデルの作成手順

Modelfileとベースモデルファイルがコンテナ内の/modelsディレクトリに揃ったので、以下のコマンドでモデルを作成します。

これにより、rinna-llama-3-youko-8bという名前のモデルがOllama内に作成されます。この手順でモデルがうまく作成できるはずです。作成が完了したら、以下のコマンドでモデルを実行できます。

結果: successとでました!

これで、下記のコマンドでモデルファイルを指定して、 Ollamaを使用してモデルを対話形式で利用することが可能です。

試しに実行してみましょう!

ちなみに、/?でヘルプを表示できました。

終了する時は、/byeで抜けます。

さらに、Docker環境から作業ディレクトリに抜けるには、exitコマンドを使用しましょう。

注意点

  1. ファイルのパスに注意:

Modelfileの作成場所を必ず確認してください。Modelfileを間違った場所に保存すると、ollama createコマンドでファイルが見つからず、エラーになる可能性があります。

  1. モデルの設定の詳細

OllamaのModelfileの詳細については、Ollamaの公式ドキュメントを確認してください:

https://github.com/ollama/ollama/blob/main/docs/modelfile.md

参考記事:

https://qiita.com/kiyotaman/items/2effed548e7be32da546

https://yashikota.com/blog/ollama-youko

https://hamaruki.com/ollama-model-file/#toc3

検証結果などは、また別記事で書いていきます。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Discord Ch. 始めました! (内容: エンジニア/映像クリエイター向けになります)