AIパーソナル・ラーニング
と実践的なガイダンス
TRAE

Ollamaカスタムインポートモデル

簡単

このセクションでは、インポートしたモデルをカスタマイズするためにModelfileを使用する方法について、以下のセクションに分けて学びます。

  1. GGUFからのインポート
  2. PytorchまたはSafetensorsからのインポート
  3. モデルから直接インポート
  4. カスタムプロンプト

 

I. GGUFからの輸入

GGUF(GPT-Generated Unified Format)は、微調整された言語モデルを保存するためのファイル形式です。このフォーマットは、異なるプラットフォームや環境間でモデルを簡単に共有し、インポートできるように設計されています。複数の数量化フォーマットをサポートしており、モデルファイルのサイズを効果的に削減することができます。

その前身はGGML(GPT-Generated Model Language)で、機械学習用に特別に設計されたテンソル・ライブラリであり、シングル・ファイル形式を持ち、CPUやGPUの異なるアーキテクチャ上で推論しやすいように設計されていたが、その後、開発における柔軟性の欠如、互換性の欠如、メンテナンスの困難さなどの問題に直面した。


オーラマ GGUFファイルからのモデルのインポートは、以下の手順でサポートされています:

  1. ダウンロード .gguf 書類

ダウンロードリンク: https://huggingface.co/RichardErkhov/Qwen_-_Qwen2-0.5B-gguf/resolve/main/Qwen2-0.5B.Q3_K_M.gguf?download=true

デモ用に、Qwen2-0.5Bモデルを選択しました。これをダウンロードし、最初のパートのルート・ディレクトリにコピーしてください。以下のディレクトリ構造を参考にしてください:

├── 1.从gguf直接导入/
│   ├── main.ipynb     
│   ├── Modelfile      
│   └── Qwen-0.5B.Q3_K_M.gguf 
├── 2.safetensors导入/
│   ├── llama-3-8b-bnb-4bit/        
│   ├── main.ipynb    
│   ├── Modelfile      
├── 3.模型直接导入/
│   ├── llama.cpp/    
│   ├── Qwen-0.5b/    
│   ├── main.ipynb     
│   ├── Modelfile      
│   └── Qwen_instruct_0.5b.gguf  
└── 4.自定义Prompt实践/
├── main.ipynb   
└── Modelfile

チップ

第3章のコードと関連文書はノートブックにあります。 モデルファイルがどこにインストールされているかわからない場合は ノート/C3

  1. 新規モデルファイル作成
FROM ./Qwen2-0.5B.Q3_K_M.gguf
  1. Ollamaでモデルを作成する

以下のターミナルコマンドは、常にModelfileファイルがあるディレクトリから実行してください!

ollama create mymodel -f Modelfile
  1. ターミナルでモデルを実行する(ノートブックでは実行されないことがテストされています。)
ollama run mymodel

オーラマ カスタムインポートモデル-1

 

PytorchまたはSafetensorsからのインポート

Safetensorsはディープラーニングモデルの重みを保存するためのファイルフォーマットで、セキュリティ、効率性、使いやすさの問題に対処するように設計されている。この部分の機能はまだコミュニティメンバーによって開発されておらず、ドキュメントのリソースは現在のところ限られている。

もちろん、safetensorsファイルをggufファイルに変換してから処理することもできます。

セーフティセンサーとGGUFの詳細については、こちらのリンク(https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf)をご参照ください。

  • ラマフォーカサルLM
  • ミストラルフォーコーサルLM
  • GemmaForCausalLM

このセクションはまだコミュニティによって最適化されていないため、ここで提供されるサンプルコードとプロセスは参考用であり、正常に動作することを保証するものではありません。詳細は公式ドキュメントを参照してください。

  1. llama-3モデルをダウンロードする
!pip install huggingface_hub
# 下载模型
from huggingface_hub import snapshot_download
model_id = "unsloth/llama-3-8b-bnb-4bit"
snapshot_download(
repo_id=model_id, 
local_dir="llama-3-8b-bnb-4bit",
local_dir_use_symlinks=False,
revision="main",
# 怎么获取<YOUR_ACCESS_TOKEN>,请参照部分3
use_auth_token="<YOUR_ACCESS_TOKEN>")
  1. ルート・ディレクトリに以下の内容のModelfileファイルを作成する:
FROM ./llama-3-8b-bnb-4bit
  1. Ollamaでモデルを作成する
ollama create mymodel2 -f Modelfile
  1. 運用モデル
ollama run mymodel2

 

III.モデルからの直接インポート

通常、我々はHuggingFaceで多くのモデルファイルにさらされている、幸いなことに、hfはこれらのモデルをダウンロードして処理するために非常に便利なAPIを提供しています、上記のような直接ダウンロードは、ネットワーク環境によって制限され、速度は非常に遅いです、この小さなセクションでは、我々は完了するためにスクリプトとhfを使用します。

ラマ.cpp GGUFはCLIとサーバー機能を提供するオープンソースプロジェクトです。

Ollamaで直接変換できないアーキテクチャについては、llama.cppを使って数値化し、GGUF形式に変換してから、最初の方法でインポートすることができる。 私たちの変換プロセス全体は、以下のステップに分かれています:

  1. huggingfaceからモデルをダウンロードする;
  2. 変換にはllama.cppを使う;
  3. モデルの定量化にはllama.cppを使う;
  4. モデルを実行し、アップロードする。

3.1 HuggingFaceからモデルをダウンロードする

[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C3/1..md#31--huggingface--model)

最も直感的なダウンロード方法は git clone やリンクですが、llm は各パーツを GB 単位でカウントしているため、git clone やリンクからダウンロードすることはできません。 OOM Error(Out of memory)Pythonで簡単なdownload.pyを書くことができます。

まず、hfにアクセスしてユーザーの個人情報を入手する。 ACCESS_TOKENをクリックして、huggingfaceの個人設定ページを開きます。

オーラマ カスタムインポート モデル-2

Ollamaカスタマイズ輸入モデル-3

オーラマ カスタムインポート モデル-4

この時点で ACCESS_TOKEN 次に huggingface_hub な snapshot_download モデルをダウンロードするには、ここかQwen-0.5bを選んだ。

!pip install huggingface_hub
from huggingface_hub import snapshot_download
model_id = "Qwen/Qwen1.5-0.5B" # hugginFace's model name
snapshot_download(
repo_id=model_id, 
local_dir="Qwen-0.5b",
local_dir_use_symlinks=False,
revision="main",
use_auth_token="<YOUR_ACCESS_TOKEN>")

ダウンロードに時間がかかるかもしれませんが、我慢してください。

3.2 llama.cppによる変換

llama.cppは、GGMLの主要な作者によって、CPUを使って様々なLLMを推論することを目的として、llamaの初期のc/c++版をベースに開発されたもので、コミュニティの継続的な努力のおかげで、現在ではマルチモーダルモデルまで、主流のモデルのほとんどをサポートしています。

まず、ダウンロードしたモデルと同じディレクトリにあるllama.cppライブラリをローカルにクローンする:

git clone https://github.com/ggerganov/llama.cpp.git

llama.cppを使ったモデルの変換処理はpythonでの開発をベースにしているため、関連するライブラリをインストールする必要があり、condaかvenvを使って新しい環境を作ることをお勧めします。

cd llama.cpp
pip install -r requirements.txt
python convert_hf_to_gguf.py -h

以下のように表示されれば、変換プログラムの準備は完了です。

オーラマ カスタムインポート 5型

次に、HuggingFaceからダウンロードしたモデルを、以下のスクリプトを使ってGGUF形式に変換する:

python convert_hf_to_gguf.py ../Qwen-0.5b --outfile Qwen_instruct_0.5b.gguf --outtype f16

オーラマ カスタムインポート モデル-6

llama.cppディレクトリにQwen_instruct_0.5b.ggufファイルが追加されており、この処理には数秒しかかからない。

推論時のオーバーヘッドを節約するため、モデルを数値化し、次に実践的な練習を数値化する。

3.3 llama.cppを使ったモデルの定量化

モデルの量子化とは、高精度の浮動小数点モデルを低精度のモデルに変換する技術である。 モデルの量子化の主な目的は、モデルのサイズと計算コストを削減し、モデルの精度を可能な限り維持することである。

同様に、まずModelfileファイルを作成し、次に ollama create コマンドを実行し、ggufファイルからモデルを作成します。しかし、最初のステップとは少し異なる方法で、単純に ollama create はパラメーターを追加するだけだ。

まず、前のステップで入手したQwen_instruct_0.5b.ggufを第3部のルートディレクトリに移動し、次の内容のModelfileファイルを作成します。

FROM ./Qwen_instruct_0.5b.gguf

端末は、作成スクリプトと定量化スクリプトを実行する。

# 第三部分根目录下
ollama create -q Q4_K_M mymodel3 -f ./Modelfile

オーラマ カスタムインポート モデル-7

この時点でモデルは定量化され、作成された。

3.4 モデルの実行とアップロード

ggufでモデルを実行する手順は第1部に詳述されているので、ここでは繰り返さない。

ローカルに保存されたモデルファイルでは容量が大きすぎる場合は、ステップ1と同じ考え方で、ggufモデルをhuggingfaceの自分のリポジトリにアップロードすることができます。

チップ

アップロードを完了するには、HF_ACCESS_TOKENパーミッションを書き込み、model_idを変更する必要があります。your_hf_nameは、あなたのhuggingfaceアカウント名を指します。

from huggingface_hub import HfApi
import os
api = HfApi()
HF_ACCESS_TOKEN = "<YOUR_HF_WRITE_ACCESS_TOKEN>"
#TODO 这里需要设置你的model_id
#例如 model_id = "little1d/QWEN-0.5b"
model_id = "your_hf_name/QWEN-0.5b"
api.create_repo(
model_id,
exist_ok=True,
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKEN,
)
# upload the model to the hub
# upload model name includes the Bailong-instruct-7B in same folder
for file in os.listdir():
if file.endswith(".gguf"):
model_name = file.lower()
api.upload_file(
repo_id=model_id,
path_in_repo=model_name,
path_or_fileobj=f"{os.getcwd()}/{file}",
repo_type="model", # 上傳格式為模型
use_auth_token=HF_ACCESS_TOKE)

オーラマ カスタムインポート Model-8

アップロードされると、hfリポジトリで見ることができます!

 

IV.プロンプトのカスタマイズ

Ollamaはカスタマイズされたプロンプトをサポートしており、ユーザーのニーズに合ったテキストを生成することができます。

プロンプトをカスタマイズする手順は以下の通り:

  1. ルート・ディレクトリにModelfileファイルを作成する。
FROM llama3.1
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.
  1. モデルの作成
ollama create mymodel -f ./Modelfile

オーラマ カスタムインポート 9型

モデルの作成には、モデルを引っ張るよりも少し時間がかかるかもしれません。

オーラマ カスタムインポートモデル-10

もう一度やってくれ。 ollama list 既存のモデルを見ると、mymodelが正しく作成されていることがわかります。

オーラマ カスタムインポートモデル-11

  1. 運用モデル
ollama run mymodel

オーラマ カスタムインポート 12型

ご覧の通り、アルパカ🦙がマリオに変身しました!プロンプトのカスタマイズは成功しました!😘😘😘😘😘😘

参照リンク

  • https://www.linkedin.com/pulse/llama-3-safetensors-vs-gguf-talles-carvalho-jjcqf
  • https://www.sysgeek.cn/ollama-on-windows
  • https://ollama.com/blog/openai-compatibility
無断転載を禁じます:チーフAIシェアリングサークル " Ollamaカスタムインポートモデル
ja日本語