Qwen2-7BモデルのローカルデプロイメントとAPI活用ガイド

はじめに

阿里巴巴の通義千問チームがQwen2シリーズのオープンソースモデルをリリースしました。このシリーズには、5つのサイズの事前学習・指令微調整モデルが含まれています:Qwen2-0.5BQwen2-1.5BQwen2-7BQwen2-57B-A14BおよびQwen2-72Bです。現在の最も優れたオープンソースモデルと比較すると、Qwen2-72Bは自然言語理解、知識、コード、数学、多言語を含む多くの能力において、現在のリーディングモデルであるLlama3-70Bを大幅に上回ります。

本稿では、Qwen2-7B-Instruct指令微調整モデルの中規模モデルをデプロイし、体験する方法を解説します。最近リリースされた同規模のオープンソースモデルであるLlama3-8BGLM4-9Bと比較しても、Qwen2-7B-Instructは特にコードと中国語理解において、多くの評価で顕著な優位性を持っています。

注意: Qwen2はオープンソースですが、モデルのライセンスに従う必要があります。Qwen2-72Bは引き続きQianwen Licenseを使用していますが、それ以外のシリーズモデル(Qwen2-0.5BQwen2-1.5BQwen2-7BQwen2-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ローカル大モデル管理ツールをダウンロード・インストールします:

OllamaMacOSLinuxWindowsオペレーティングシステムのインストールパッケージを提供しており、ご自身のOSに合わせてダウンロード・インストールできます:

インストールパッケージをダウンロード後のインストールプロセスは、他のソフトウェアをインストールするのと同じで、NextInstallをクリックして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": "なぜ空は青いのですか?" }
  ]
}'

タグ: Qwen2 大規模言語モデル ローカルデプロイment Ollama API活用

7月17日 17:01 投稿