Skip to content

目次

Safetensorsの重みからfine-tunedアダプターをインポートする

まず、ファインチューニングに使用したベースモデルを指定するFROMコマンドと、Safetensorsアダプターが格納されているディレクトリを指定するADAPTERコマンドを含むModelfileを作成します:

dockerfile
FROM <base model name>
ADAPTER /path/to/safetensors/adapter/directory

FROMコマンドには、アダプターの作成に使用したものと同じベースモデルを指定してください。そうしないと不安定な結果が得られる可能性があります。ほとんどのフレームワークは異なる量子化手法を使用しているため、非量子化(つまり非QLoRA)のアダプターを使用することをお勧めします。アダプターがModelfileと同じディレクトリにある場合は、ADAPTER .を使用してアダプターパスを指定してください。

次に、Modelfileを作成したディレクトリでollama createを実行します:

shell
ollama create my-model

最後に、モデルをテストします:

shell
ollama run my-model

Ollamaは、複数の異なるモデルアーキテクチャに基づくアダプターのインポートをサポートしています。以下を含みます:

  • Llama(Llama 2、Llama 3、Llama 3.1、Llama 3.2を含む)
  • Mistral(Mistral 1、Mistral 2、Mixtralを含む)
  • Gemma(Gemma 1、Gemma 2を含む)

Safetensors形式でアダプターを出力できるファインチューニングフレームワークまたはツールを使用してアダプターを作成できます。以下は例です:

Safetensorsの重みからモデルをインポートする

まず、Safetensorsの重みが格納されているディレクトリを指定するFROMコマンドを含むModelfileを作成します:

dockerfile
FROM /path/to/safetensors/directory

重みと同じディレクトリにModelfileを作成する場合は、FROM .コマンドを使用できます。

次に、Modelfileを作成したディレクトリでollama createコマンドを実行します:

shell
ollama create my-model

最後にモデルをテストします:

shell
ollama run my-model

Ollamaは、複数の異なるアーキテクチャのモデルのインポートをサポートしています。以下を含みます:

  • Llama(Llama 2、Llama 3、Llama 3.1、Llama 3.2を含む)
  • Mistral(Mistral 1、Mistral 2、Mixtralを含む)
  • Gemma(Gemma 1、Gemma 2を含む)
  • Phi3

これには、ファウンデーションモデル自体のインポートだけでなく、ファウンデーションモデルと_fused_(融合)されたfine-tunedモデルのインポートも含まれます。

GGUFベースのモデルまたはアダプターのインポート

GGUFベースのモデルまたはアダプターをお持ちの場合は、Ollamaにインポートすることが可能です。GGUFモデルまたはアダプターは以下の方法で取得できます:

  • Llama.cppのconvert_hf_to_gguf.pyを使用してSafetensorsモデルを変換する
  • Llama.cppのconvert_lora_to_gguf.pyを使用してSafetensorsアダプターを変換する
  • HuggingFaceなどのサイトからモデルまたはアダプターをダウンロードする

GGUFモデルをインポートするには、以下を含むModelfileを作成します:

dockerfile
FROM /path/to/file.gguf

GGUFアダプターの場合は、以下の内容のModelfileを作成します:

dockerfile
FROM <model name>
ADAPTER /path/to/file.gguf

GGUFアダプターをインポートする際は、アダプターの作成に使用したものと同じベースモデルを使用することが重要です。以下のいずれかを使用できます:

  • Ollamaのモデル
  • GGUFファイル
  • Safetensorsベースのモデル

Modelfileの作成が完了したら、ollama createコマンドを使用してモデルをビルドします。

shell
ollama create my-model

モデルの量子化

モデルを量子化することで、実行速度を向上させ、メモリ消費量を削減できますが、精度は低下します。これにより、より低スペックなハードウェアでもモデルを実行できるようになります。

Ollamaは、ollama createコマンドの-q/--quantizeフラグを使用して、FP16およびFP32ベースのモデルを異なる量子化レベルに量子化できます。

まず、量子化したいFP16またはFP32ベースのモデルを指定したModelfileを作成します。

dockerfile
FROM /path/to/my/gemma/f16/model

次にollama createを使用して量子化されたモデルを作成します。

shell
$ ollama create --quantize q4_K_M mymodel
transferring model data
quantizing F16 model to Q4_K_M
creating new layer sha256:735e246cc1abfd06e9cdcf95504d6789a6cd1ad7577108a70d9902fef503c1bd
creating new layer sha256:0853f0ad24e5865173bbf9ffcc7b0f5d56b66fd690ab1009867e45e7d2c4db0f
writing manifest
success

サポートされている量子化

  • q8_0

K-means量子化

  • q4_K_S
  • q4_K_M

ollama.comでモデルを共有する

作成したモデルをollama.comにプッシュすることで、他のユーザーが試せるように共有できます。

まず、ブラウザでOllamaサインアップページにアクセスしてください。すでにアカウントをお持ちの場合は、このステップをスキップできます。

サインアップ

モデル名の一部としてUsername(ユーザー名)フィールドが使用されます(例:jmorganca/mymodel)。そのため、選択したユーザー名に問題がないことを確認してください。

アカウントを作成し、サインインしたら、Ollamaキー設定ページに移動してください。

ページの指示に従って、Ollama公開鍵の保存場所を確認してください。

Ollamaキー

Ollama公開鍵を追加ボタンをクリックし、Ollama公開鍵の内容をテキストフィールドにコピーして貼り付けてください。

ollama.comにモデルをプッシュするには、まずモデル名がユーザー名で正しく命名されていることを確認してください。正しい名前を付けるために、ollama cpコマンドを使用してモデルをコピーする必要がある場合があります。モデル名に問題がなくなったら、ollama pushコマンドを使用してollama.comにプッシュしてください。

shell
ollama cp mymodel myuser/mymodel
ollama push myuser/mymodel

モデルのプッシュが完了したら、他のユーザーは以下のコマンドを使用してモデルをプルして実行できます:

shell
ollama run myuser/mymodel