手軽に最新LLM！OllamaとQwen3でローカルAI環境を構築する方法

こんにちわ、kaitoです。最近、AIの世界がまた一段と面白くなってきたよな。特に、ローカル環境でサクッと大規模言語モデル（LLM）を動かせるツールが出てきてから、俺たちの開発スタイルも変わりつつある。

今回は、巷で噂のQwen3っていうLLMを、俺のマシンで動かしてみた話をしようと思う。しかも、手軽に使えるOllamaと、APIテストでお世話になってるApidogを組み合わせてみたんだ。クラウドAPIも便利だけど、やっぱり自分のPCで動かすと、なんかこう、手に馴染む感じがしていいんだよな。プライバシーも守れるし、オフラインでも使えるってのが最高だぜ！

この記事では、Qwen3をOllamaで動かして、ApidogでAPIを叩いてみるまでの道のりを、初心者プログラマー目線でステップごとに解説していくぜ。LM StudioとかvLLMとか、他のツールもあるけど、今回はOllamaとApidogに絞って話を進めるから、そこんとこヨロシク！

## Qwen3って、ぶっちゃけどうなの？

まず、Qwen3について簡単に触れておこう。これはAlibabaのQwenチームが出した最新のLLMで、コーディングとか数学、推論タスクでかなりの実力を見せてるらしい。特に注目なのが、**量子化モデル**ってやつだ。これのおかげで、普通のPCでも動かせるくらい計算リソースやメモリを食わなくなったんだ。
![qwen3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/ae101c37-11d5-4fc6-9eec-597766687cb8.png)

Qwen3にはいくつか種類があるんだけど、ローカルで試すなら、まずは小さめのモデルから始めるのがおすすめだ。例えば、Qwen3-4Bとかね。こいつがまた、サイズからは想像できないくらい賢いんだ。

あと、Qwen3には「思考モード」っていう面白い機能もあるらしい。プロンプトに`/think`とか付けると、じっくり考えてから答えを出してくれるんだとか。これは後で試してみる価値ありだな。

## 俺のマシンでQwen3を動かすための準備

Qwen3をローカルで動かすには、いくつか準備が必要だ。まあ、そんな大したことじゃないから安心してくれ。

### ハードウェアの確認

最低限、これくらいは欲しいかな。

*   **CPUまたはGPU**: まあ、最近のやつなら大丈夫だろう。GPUがあると推論が速くなるから、できればNVIDIAとかのそこそこ良いやつがあると嬉しい。
*   **RAM**: Qwen3-4Bみたいな小さめのモデルでも、最低16GBは欲しいところ。32GB以上あると、もっと大きなモデルも試せるし、快適に動くぜ。
*   **ストレージ**: モデルのサイズによるけど、結構容量を食う場合がある。Qwen3-235B-A22Bとかだと150GBくらい必要になることもあるらしいから、空き容量は確認しておこう。

俺のマシンはそこそこスペックがあるから、この辺はクリアだ。皆さんのマシンはどうだ？

## ステップ1：Qwen3モデルを手に入れる

まずは、Qwen3の量子化モデルをダウンロードする必要がある。公式がHugging FaceとModelScopeで公開してるから、そこから手に入れるのが一番安心だ。

*   [Hugging Face](https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f)
*   [ModelScope](https://modelscope.cn/collections/Qwen3-9743180bdc6b48)

今回はHugging Faceから、手軽なGGUF形式のQwen3-4Bをダウンロードしてみよう。

### Hugging Faceからのダウンロード

1.  Hugging FaceのQwen3コレクションページにアクセスする。
2.  「Qwen/Qwen3-4B」みたいなモデルを探す。
3.  ダウンロードボタンをクリックするか、Gitコマンドでクローンする。俺はGitでやるのが好きだな。
    ```bash
    git clone https://huggingface.co/Qwen/Qwen3-4B-GGUF
    ```
4.  ダウンロードしたモデルファイルは、Ollamaが読み込める場所に置いておこう。例えば、`/models/qwen3-4b-gguf`とか、分かりやすい場所がいいぜ。


https://huggingface.co/Qwen/Qwen3-4B-GGUF


これでモデルの準備はOKだ。次はOllamaを使ってこいつを動かしてみよう！

## ステップ2：OllamaでQwen3を動かす！

Ollamaは、ローカルでLLMを動かすのにめちゃくちゃ便利なツールだ。コマンド一つでモデルをダウンロードして実行できるから、初心者にも優しい。Qwen3のGGUF形式もバッチリサポートしてるぜ。

### Ollamaのインストール

まだOllamaを入れてないなら、[公式サイト](https://ollama.com/)からダウンロードする。

インストールできたか確認してみよう。
```bash
ollama --version
```
![ollama-version-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/a9a82894-59be-4c81-ac34-5fc254f8bbed.png)

バージョンが表示されれば成功だ。

### OllamaでQwen3を実行！

Ollamaのインストールが終わったら、いよいよQwen3を動かすぞ。ダウンロードしたモデルを使う場合は、Modelファイル（例えば`Qwen3-4B-GGUF/Qwen3-4B-Q8_0.gguf`とか）を指定して、Modelファイルを作成する必要がある。

まず、Modelファイルを作成するための`Modelfile`を用意する。内容はこんな感じだ。

```
FROM /path/to/your/model/Qwen3-4B-Q8_0.gguf
TEMPLATE """{{ .Prompt }}"""
```
> 
> `Modelfile` ファイルの作成方法:
> 
> 1. ローカルの GGUF ファイルのパスを見つける：  
>    `/path/to/your/model/Qwen3-4B-Q8_0.gguf`
> 
> 2. nano エディタを使って `modelfile` という名前のテキストファイルを新規作成する。
> 
>    - ファイルの内容は、以下のように正しい Modelfile の設定にする：
> 
>    ```
>    FROM /path/to/your/model/Qwen3-4B-Q8_0.gguf
>    TEMPLATE """{{ .Prompt }}"""
>    ```
> 
> 3. （nano エディタ内で）下記の手順で保存するだけでよい：
> 
>    `Ctrl+O`（Ctrlキーを押しながら O）を押し、その後エンターキーでファイル名を確定  
>    `Ctrl+X` で nano を終了




`/path/to/your/model/Qwen3-4B-Q8_0.gguf`の部分は、さっきダウンロードしたモデルファイルの絶対パスに置き換えてくれよな。

この`Modelfile`を適当な名前（例えば`my-qwen3-8b-local`）で保存したら、以下のコマンドでOllamaにモデルを登録する。

```bash
ollama create my-qwen3-8b-local -f ./modelfile
```
`my-qwen3-8b-local`は好きなモデル名でいいぜ。`-f`の後ろは、保存した`Modelfile`のパスだ。

登録が終わったら、いよいよ実行だ！

```bash
ollama run my-qwen3-8b-local
```

これでQwen3が起動するはずだ。起動したら、コマンドラインで直接話しかけてみよう。

```
>>> 今週の東京の天気予報はどうですか？
```
![qwen3-4b-gguf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/42b8daa4-db70-42e1-82bf-78d9fb593a11.png)

ちゃんと応答があれば成功だ！

Ollamaは、`http://localhost:11434`でAPIエンドポイントも公開してるんだ。これを使えば、プログラムからQwen3を操作できる。次は、このAPIをApidogでテストしてみよう！

## ステップ3：ApidogでQwen3 APIをテスト！

開発者なら、APIのテストは避けて通れない道だよな。ローカルで動かしてるLLMのAPIも、ちゃんとテストしておきたい。そこで俺がいつも使ってるのがApidogだ。こいつがまた、API開発からテストまでこれ一つで完結できて、マジで手放せないんだ。

### Apidogの準備

*   まだApidogを使ってないなら、[公式サイト](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2qiita2&utm_content=Qwen3-ollama)からダウンロードしてインストールしておこう。
*   Apidogを起動して、新しいプロジェクトを作成する。

### Ollama APIをApidogで叩く！

さあ、Apidogを使ってOllamaのAPIをテストしてみるぞ。

1.  Apidogで新しいAPIリクエストを作成する。
2.  リクエストのURLを `http://localhost:11434/api/generate` に設定する。これがOllamaのテキスト生成APIのエンドポイントだ。
3.  Methodは `POST` を選択。
4.  Bodyタブを開いて、`raw`を選び、タイプを`JSON`にする。
5.  以下のJSONをBodyに入力する。`model`には、さっき`ollama create`で登録したモデル名（例: `my-qwen3-8b-local`）を指定するのを忘れるなよ！

```json
{
  "model": "my-qwen3-8b-local",
  "prompt": "今週の東京の天気予報はどうですか？",
  "temperature": 0.6,
  "top_p": 0.95,
  "top_k": 20
}
```

`prompt`には聞きたいことを書く。`temperature`とか`top_p`、`top_k`は、応答の多様性とかを調整するパラメータだ。この辺は後で微調整できる。
6.  「**送信**」ボタンをクリック！

![apidog-qwen3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/17476e93-7e57-4776-a9c2-4da1caa9af4b.png)



どうだ？ちゃんとQwen3からの応答が返ってきたか？Apidogなら、ストリーミング応答もリアルタイムで見れるから、LLMの応答が生成されていく様子が分かって便利なんだ。デバッグも捗るぜ！

## ステップ4：Qwen3の応答をチューニングする

Qwen3の応答をもっと自分の好みに合わせたいなら、いくつかのパラメータを調整してみよう。

### 思考モードを使いこなす

さっきも触れた「思考モード」だ。これをオンにすると、Qwen3はより深く考えてから応答を生成するようになる。複雑な問題とか、じっくり考えて欲しい時には有効だ。

使い方は簡単。プロンプトの最後に`/think`って付けるだけだ。思考モードをオフにしたい時は`/no_think`を付ける。

*   例: `この数学の問題を解いてください /think`

### 生成パラメータをいじる

ApidogでAPIを叩くときにも設定したパラメータだ。こいつらをいじることで、Qwen3の応答の「個性」を変えることができる。

*   **Temperature**: 値が大きいほど、応答がランダムで創造的になる。小さいと、より定型的で予測可能な応答になる。Qwenチームは思考モードなら0.6、それ以外なら0.7を推奨してるらしい。
*   **Top-P**: 確率の高いトークンから順に、累積確率がこの値を超えるまで候補を選ぶ。小さい値だと、より確率の高いトークンが選ばれやすくなる。推奨は思考モードで0.95、それ以外で0.8だ。
*   **Top-K**: 確率の高い上位K個のトークンから候補を選ぶ。推奨は両方のモードで20だ。

これらのパラメータを色々試してみて、自分の求める応答が得られるように調整してみよう。貪欲なデコーディング（Temperatureを0にするなど）は避けた方が良い結果になりやすいらしいぜ。

## まとめ

いやー、どうだった？Ollamaを使えば、Qwen3みたいな最新のLLMも、俺たちのローカルマシンでこんなに手軽に動かせるんだ。しかも、Apidogを使えば、そのAPIを簡単にテストできる。

特にQwen3は、小さめのモデルでも結構賢いから、普通のPCでも十分遊べるし、実用的な使い方もできそうだ。ローカルで動かすメリットは大きいよな。プライバシーも安心だし、コストもかからない。

ハードウェアもソフトウェアもどんどん進化して、LLMの力はクラウドだけじゃなく、俺たちの手元にもやってきてる。OllamaとApidog、そしてQwen3。この組み合わせ、マジで試す価値ありだぜ！

お前らもQwen3、試してみたか？どんなことに使ってるか、ぜひコメントで教えてくれ！他のモデルとの比較とか、パフォーマンスの話とかも聞きたいな。じゃ、また次の記事で会おう！