はじめに
阿里巴巴の通義千問チームがQwen2シリーズのオープンソースモデルをリリースしました。このシリーズには、5つのサイズの事前学習・指令微調整モデルが含まれています:Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14BおよびQwen2-72Bです。現在の最も優れたオープンソースモデルと比較すると、Qwen2-72Bは自然言語理解、知識、コード、数学、多言語を含む多くの能力において、現在のリーディングモデルであるLlama3-70Bを大幅に上回ります。
本稿では、Qwen2-7B-Instruct指令微調整モデルの中規模モデルをデプロイし、体験する方法を解説します。最近リリースされた同規模のオープンソースモデルであるLlama3-8BやGLM4-9Bと比較しても、Qwen2-7B-Instructは特にコードと中国語理解において、多くの評価で顕著な優位性を持っています。
注意: Qwen2はオープンソースですが、モデルのライセンスに従う必要があります。Qwen2-72Bは引き続きQianwen Licenseを使用していますが、それ以外のシリーズモデル(Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14Bなど)はすべてApache 2.0ライセンスプロトコルを採用しています。
Qwen2-7B-instructモデルファイルのダウンロード
モデルデプロイプロセスを簡略化するため、直接GGUFファイルをダウンロードします。 Qwen2-7B-Instruct-GGUFモデルファイルリストを開き、qwen2-7b-instruct-q5_k_m.ggufを選択してダウンロードします:
ご自身のニーズに応じて、他のバージョンのモデルファイルを選択してダウンロードすることもできます!
Qwen2-7B-Instruct大モデルの起動
GGUFモデル量化ファイルのダウンロードが完了したら、Qwen2-7B大モデルを実行できます。
Qwen2-7B大モデルを起動する前に、まずPython依存パッケージリストをインストールする必要があります:
pip install llama-cpp-python
pip install openai
pip install uvicorn
pip install starlette
pip install fastapi
pip install sse_starlette
pip install starlette_context
pip install pydantic_settings
次に、ターミナルウィンドウを開き、GGUFモデルファイルディレクトリに移動し、Qwen2-7B大モデルを起動します(./qwen2-7b-instruct-q5_k_m.ggufは前のステップでダウンロードしたモデルファイルのパスです):
# Qwen2大モデルの起動
# n_ctx=20480は単一セッションの最大トークン数を20480に設定
python -m llama_cpp.server \
--host 0.0.0.0 \
--model ./qwen2-7b-instruct-q5_k_m.gguf \
--n_ctx 20480
Qwen2-7B-instruct コマンドライン対話クライアント
CLIコマンドラインクライアントの実装例です:
# dialog_client.py
from openai import OpenAI
import time
# サーバーポートに注意、ローカルなのでapi_keyは不要
model_client = OpenAI(base_url="http://127.0.0.1:8000/v1",
api_key="not-needed")
# 対話履歴:システム役割を設定し、「自己紹介」を送信
chat_history = [
{"role": "system", "content": "あなたは知能アシスタントです。回答は常に理解しやすく、正確で役立つ、簡潔なものであるべきです。"},
]
# 初回自己紹介後、ユーザーの入力を待機
while True:
response = model_client.chat.completions.create(
model="local-model",
messages=chat_history,
temperature=0.7,
stream=True,
)
assistant_reply = {"role": "assistant", "content": ""}
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
assistant_reply["content"] += chunk.choices[0].delta.content
chat_history.append(assistant_reply)
print("\033[91;1m")
user_query = input("> ")
if user_query.lower() in ["さようなら", "終了", "exit"]: # さようなら/終了/exitでクライアント終了
print("\033[0mまたのご利用ありがとうございます!")
break
chat_history.append({"role": "user", "content": user_query})
print("\033[92;1m")
CLI対話クライアントを起動:python dialog_client.py
これでQwen2-7B-Instructと対話し、Qwen2大モデルの魅力を体験できます。
主にAPI経由でQwen2大モデルを使用する場合、Qwen2のデプロイはここで完了です。
次のセクションでは、WebUI対話クライアントをデプロイし、Webインターフェース経由でQwen2大モデルを使用し、他の人と共有できるようにします。
Qwen2-7B-Instruct WebUIクライアント
Ollamaツールを組み合わせて、WebUIクライアントを構築します。
ステップ1: Ollamaローカル大モデル管理ツールをダウンロード・インストールします:
OllamaはMacOS、Linux、Windowsオペレーティングシステムのインストールパッケージを提供しており、ご自身のOSに合わせてダウンロード・インストールできます:
インストールパッケージをダウンロード後のインストールプロセスは、他のソフトウェアをインストールするのと同じで、NextやInstallをクリックしてollamaをコマンドラインにインストールします。インストール後のステップでは、後で直接使用するため、モデルをインストールする必要はありません。
ステップ2: Node.jsプログラミング言語ツールキットをインストールします
Node.jsプログラミング言語ツールキットのインストールは、他のソフトウェアパッケージをインストールするのと同じで、https://nodejs.org からダウンロード・インストールします。
インストール後、Node.jsのバージョンを確認し、現在の最新バージョンv20を使用することをお勧めします:
node -v
筆者がインストールしたバージョン:v20.13.1(最新版)
ステップ3: GGUFモデルファイルからOllamaモデルを作成します
Qwen2-7BのGGUFモデルファイルが保存されているディレクトリに、Modelfileという名前のファイルを作成し、その内容を以下のようにします:
FROM ./qwen2-7b-instruct-q5_k_m.gguf
次に、ターミナルでこのファイルを使用してOllamaモデルを作成します。ここでは、Ollamaのモデル名をQwen2-7Bとします:
$ ollama create Qwen2-7B -f ./Modelfile
モデルデータを転送中
既存のレイヤー sha256:258dd2fa1bdf98b85327774e1fd36e2268c2a4b68eb9021d71106449ee4ba9d5 を使用
新しいレイヤー sha256:14f4474ef69698bf4dbbc7409828341fbd85923319a801035e651d9fe6a9e9c9 を作成
マニフェストを書き込み中
成功
最後に、作成したばかりの大言語モデルをOllamaで起動します:
ollama run Qwen2-7B
起動が完了すると、以前とほぼ同じコンソール対話インターフェースが表示され、Qwen2-7Bと対話できます。
このモデルを不要になった場合は、コマンドラインでモデルファイルを削除できます:ollama rm Qwen2-7B
ローカルのOllamaが管理するモデルリストを確認することもできます:ollama list
Ollamaのモデルファイルルートディレクトリ:~/.ollama
ステップ4: Ollama大モデルWeb対話インターフェースをデプロイします
コンソールチャット対話インターフェースの体験はあまり良くないため、次にWeb可視化チャットインターフェースをデプロイします。
まず、ollama-webuiWebプロジェクトコードをダウンロードします:git clone https://github.com/ollama-webui/ollama-webui-lite
次に、ollama-webuiコードのディレクトリに移動します:cd ollama-webui-lite
Node.jsツールキットのミラーソースを設定し、次のNode.js依存パッケージのダウンロードをより高速にします:npm config set registry http://mirrors.cloud.tencent.com/npm/
Node.js依存のツールパッケージをインストールします:npm install
最後に、Web可視化インターフェースを起動します:npm run dev
上記の出力が表示されれば、Web可視化インターフェースは成功しています!
ステップ5: WebUIでQwen2-7Bと楽しく対話します
Web可視化インターフェースをブラウザで開きます:http://localhost:3000/
Ollamaの初期化ページが表示され、デフォルトではモデルが選択されていないため、作成してデプロイしたQwen2-7Bモデルを選択します:
下部にチャット入力ボックスがあり、これでQwen2-7Bと楽しくチャット対話できます:
まとめ:Qwen2-7BはLlama3-8Bより高速
検証と比較:テキスト推論において、Qwen2-7Bは確かにLlama3-8Bよりはるかに高速です。今後の中国語テキスト推論関連のAPIインターフェースは、より高速なQwen2-7B大モデルを主に使用します~
その他:Ollamaツールの一般的な使用法
上記の紹介からわかるように、Ollamaを使用して大モデルのWeb可視化対話ロボットをデプロイするのは非常に便利です。以下に、Ollamaが提供する一部の使用法を整理します。
Ollama コマンドツール
# 現在のOllamaモデルを確認
ollama list
# 現在デプロイされているモデルをインクリメンタルに更新
ollama pull Qwen2-7B
# モデルファイルを削除
ollama rm Qwen2-7B
# モデルをコピー
ollama cp Qwen2-7B Qwen2-newModel
Ollama API結果の返却
curl http://localhost:11434/api/generate -d '{
"model": "Qwen2-7B",
"prompt":"なぜ空は青いのですか?"
}'
Ollama APIチャット対話
curl http://localhost:11434/api/chat -d '{
"model": "Qwen2-7B",
"messages": [
{ "role": "user", "content": "なぜ空は青いのですか?" }
]
}'