AI時代の新常識!QwenLM/Qwen3で爆速開発:導入からサンプルコードまで徹底解説


AI時代の新常識!QwenLM/Qwen3で爆速開発:導入からサンプルコードまで徹底解説

QwenLM/Qwen3

2025-07-23

まず、QwenLM/Qwen3っていうのは、Alibaba CloudのQwenチームが開発した大規模言語モデル(LLM)のシリーズのことだ。例えるなら、ラーメンの麺、スープ、具材がセットになった「ラーメンの素」みたいなもんだな。これを使えば、ゼロから自分でラーメンを作るんじゃなくて、美味しいラーメンをサクッと作れるってわけだ。

じゃあ、なんで「シリーズ」なのかって言うと、醤油、味噌、豚骨みたいに、いろんな味(モデルサイズや特性)があるんだ。例えば、Qwen3は以下のようなモデルがあるぜ。

Qwen3-0.5B
これは、ちょっとお腹が空いた時にサッと食べられる「ミニラーメン」みたいなもんかな。小さくて軽くて、手軽に使えるのが特徴だ。

Qwen3-1.8B
もうちょっとボリュームが欲しい時にぴったりな「並盛ラーメン」だ。ミニラーメンより賢くて、色々なことができるようになる。

Qwen3-7B
これは「大盛ラーメン」だな。かなり賢くて、複雑なタスクもこなせるようになる。

Qwen3-14B
もうこれは「特盛ラーメン」だ。大規模なデータで学習されてるから、非常に高性能で幅広いタスクに対応できる。

Qwen3-72B
完全に「二郎系ラーメン」だな!ものすごく大きくて、超高性能。でも、それなりのパワー(計算リソース)が必要になる。

俺たちソフトウェアエンジニアにとって、QwenLM/Qwen3はまさに強力なツールになる。例えるなら、ラーメン屋が麺やスープをいちから作るんじゃなく、高品質な既成のスープや麺を仕入れて、そこに独自の工夫を凝らして美味しいラーメンを提供するようなもんだ。QwenLM/Qwen3を使うことで、以下のようなことができるようになるぜ。

これがQwenLM/Qwen3の得意分野だ。

テキスト生成
「ブログ記事の草稿を書いてくれ」「商品説明文を考えてくれ」みたいな依頼に、人間が書いたかのような自然な文章を生成してくれる。これは、醤油ラーメンでいうところの、万人受けする、基礎的で使いやすい味だな。

要約
長い文章やドキュメントを、短く要点をまとめることができる。論文を読む時間がなくても、サッと内容を把握したい時に便利だ。

翻訳
異なる言語間での翻訳もできる。グローバルなサービスを展開するなら必須の機能だろ?

質問応答
ユーザーからの質問に対して、適切な回答を生成してくれる。これは、カスタマーサポートの自動化や、FAQシステムの構築に役立つぜ。

感情分析
テキストのポジティブ/ネガティブな感情を判定できる。ユーザーの声からサービスの改善点を見つけるのに使えるな。

驚くかもしれないが、LLMはコードも書けるんだ。

コードの自動生成
「Pythonで指定されたAPIを呼び出すコードを書いてくれ」とか「特定のデータ構造を扱うクラスを生成してくれ」といった指示で、基本的なコードのひな形を作ってくれる。これは、ちょっと癖があって奥深いけど、ハマると病みつきになる味噌ラーメンみたいだな。

コードの補完と提案
エディタでコードを書いている時に、次に書くべきコードを提案してくれる。まるで、優秀なペアプログラミングの相手がいるみたいだ。

バグの特定と修正提案
エラーメッセージを貼り付けると、その原因を推測し、修正方法を提案してくれる。デバッグ時間の短縮に大いに役立つぜ。

既存の機能だけでなく、QwenLM/Qwen3を組み込むことで、新しい発想のアプリケーションを開発できる可能性が広がる。

チャットボット
ユーザーと自然な会話ができるチャットボットを簡単に構築できる。

コンテンツ生成ツール
Webサイトの記事、SNSの投稿、マーケティング資料など、様々なコンテンツを自動で生成するツールを作れる。

クリエイティブな用途
ストーリーの生成、詩の作成、ゲームのシナリオ作成など、AIをクリエイティブな分野に応用できる。

QwenLM/Qwen3を導入する方法はいくつかあるが、最も一般的なのはHugging Face Transformersライブラリを使う方法だ。これは、ラーメン屋が「麺」「スープ」「具材」をそれぞれ専門業者から仕入れて、店舗で組み合わせるようなもんだな。Pythonを使って、数行のコードで簡単に利用できるぜ。

まずは、Hugging Face TransformersとPyTorch(またはTensorFlow)をインストールする必要がある。PyTorchが一般的なので、今回はPyTorchを例にする。

pip install transformers torch

これが、ラーメンを作るための鍋や調理器具を揃えるようなもんだな。

次に、使いたいQwen3のモデルをダウンロードしてロードする。例えば、Qwen/Qwen1.5-7B-Chatを使う場合。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 使用するモデルの名前を指定
model_name = "Qwen/Qwen1.5-7B-Chat"

# トークナイザー(文章をモデルが理解できる形式に変換するもの)をロード
tokenizer = AutoTokenizer.from_pretrained(model_name)

# モデル本体をロード
# device_map="auto" は、利用可能なGPUがあれば自動的に使う設定
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16, # メモリ節約のためにfloat16を使用することが多い
    device_map="auto"
)

# GPUがない場合は、model.to("cpu")でCPUにロードすることも可能だが、処理速度は遅くなる
# model = AutoModelForCausalLM.from_pretrained(model_name) # device_map="auto"を削除
# model.to("cpu")

これは、まさにラーメンの「麺」と「スープの素」を冷蔵庫から取り出すイメージだ。tokenizerが麺、modelがスープの素ってところだな。

モデルをロードしたら、実際に文章を生成させてみよう。

# 会話履歴を作成(チャットモデルの場合)
# Systemプロンプトでモデルの振る舞いを定義
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me a joke."},
]

# トークナイザーで入力メッセージをモデルが理解できる形式に変換
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False, # Trueにするとテンソルとして返す
    add_generation_prompt=True
)

# モデルに入力して文章を生成させる
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

# 文章生成のパラメータを設定
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512, # 生成する最大トークン数
    do_sample=True,      # サンプリングを使用するか(Trueだと多様な出力、Falseだと決定的な出力)
    temperature=0.7,     # 温度パラメータ(高ければ高いほどランダムな出力)
    top_p=0.9,           # Top-Pサンプリング(確率の高い上位P%のトークンからサンプリング)
)

# 生成されたトークンをデコードしてテキストに戻す
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

# 生成されたテキストからモデルの応答部分を抽出
# Qwenのチャットテンプレートの特性上、入力プロンプトも含まれるので、最後のassistantの応答部分を抽出
response = generated_text.split("<|im_start|>assistant\n")[-1]
print(response)

これが、具材(プロンプト)を入れて、実際にラーメンを「調理」して「提供」する部分だ。パラメータのtemperatureやtop_pは、ラーメンの味の濃さや麺の硬さを調整するようなもんだな。

ここでは、QwenLM/Qwen3を使って、簡単なチャットボットを作る例を見てみよう。これは、豚骨ラーメンのように、一度ハマると抜け出せない中毒性のあるアプリケーションを作るイメージだ。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# モデルの指定(ここではQwen1.5-7B-Chatを使用)
model_name = "Qwen/Qwen1.5-7B-Chat"

# トークナイザーとモデルのロード
print(f"Loading model: {model_name}...")
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)
print("Model loaded successfully!")

# 会話履歴を格納するリスト
messages = [{"role": "system", "content": "You are a helpful assistant."}]

print("Type 'exit' to quit the chat.")
while True:
    user_input = input("You: ")
    if user_input.lower() == 'exit':
        break

    # ユーザーの入力メッセージを会話履歴に追加
    messages.append({"role": "user", "content": user_input})

    # 会話履歴からモデルへの入力テキストを生成
    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    # モデルへの入力テンソルを準備
    model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

    # テキスト生成
    generated_ids = model.generate(
        model_inputs.input_ids,
        max_new_tokens=512,
        do_sample=True,
        temperature=0.7,
        top_p=0.9,
    )

    # 生成されたテキストをデコード
    generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    # モデルの応答部分を抽出
    assistant_response = generated_text.split("<|im_start|>assistant\n")[-1]

    print(f"Assistant: {assistant_response}")

    # モデルの応答を会話履歴に追加
    messages.append({"role": "assistant", "content": assistant_response})

print("Chat ended.")

このコードを実行すると、コンソールでAIと会話ができるようになる。ユーザーが入力した内容に対して、Qwen3が応答を生成してくれるんだ。

会話履歴の管理
messagesリストを使って、これまでの会話のやり取りを記録している。これによって、モデルは前後の文脈を理解した上で応答を生成できる。まるで、店員が常連客の好みを覚えてくれるようなもんだな。

apply_chat_template
Qwenのチャットモデルは、特定のフォーマットで入力が与えられることを期待している。apply_chat_template関数がそのフォーマットに合わせてくれるんだ。これは、ラーメンの具材をきれいに盛り付ける作業みたいなもんだ。

generate
モデルにテキストを生成させるメインの関数だ。max_new_tokensで応答の長さを制限したり、temperatureやtop_pで応答のランダム性や多様性を調整できる。

QwenLM/Qwen3は、俺たちソフトウェアエンジニアにとって、自然言語処理やコード生成、そして新しいアプリケーション開発の可能性を大きく広げてくれる強力なツールだ。醤油ラーメンのように汎用的に使える部分もあれば、味噌ラーメンや豚骨ラーメンのように特定の用途で真価を発揮する部分もある。


QwenLM/Qwen3