1台のPCで671Bを動かす時代！KTransformers + DeepSeek-R1の爆速導入まとめ



## 1. はじめに

大規模言語モデル（LLM）の発展が加速するなか、**「自宅や小規模環境でいかに巨大モデルを動かせるか」** が大きな注目を集めています。  
とくに **DeepSeek-R1** は **671B（6,710億）パラメータ** のMoEアーキテクチャを採用しており、高性能なGPUクラスタでないと動かせない印象が強いモデルでした。

ところが最近、**KTransformers** というフレームワークを組み合わせることで、  
- 単一の **RTX 4090（24GB VRAM）** と  
- 数百GB級のDRAM  
という環境でも **「完全版のDeepSeek-R1」** をオフロード推論する事例が続々と報告されています。

本記事では、**KTransformers + DeepSeek-R1** をローカルPCで導入する手順と、CPU/GPU異構推論などの最適化手法について解説します。

---

## 2. KTransformers概要
![352762149-d5a2492f-a415-4456-af99-4ab102f13f8b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3872898/3be04864-c723-4301-8134-2729f0112791.png)
### KTransformersとは

> **KTransformers**（Quick Transformers と発音）は、Hugging Face Transformers互換のフレームワークでありながら、高度なカーネル最適化やオフロード戦略を取り入れ、効率的なLLM推論を実現します。

- **Pythonに特化** しており、RESTful API（OpenAI互換・Ollama互換）やChatGPT風UIも簡単に利用可能。
- 一行のコードで最適化されたモジュールを**注入**する仕組み（Injection Framework）が特徴。
- **Windows / Linux** など、幅広い環境をサポート。

### 主な特徴
- **MoE（混合専門家）構造への対応**  
  大規模モデルでもスパース（部分的）にアクティベーションを行うMoE構造に最適化。
- **CPU/GPUの異構推論を自動オフロード**  
  高負荷の演算はGPUに、比較的軽量な演算や巨大な稀疏行列はCPUに割り当てる。
- **量子化（Quantization）の柔軟な選択**  
  Q4, Q5などさまざまな形式をサポートし、VRAM要件を大きく削減。
- **高速演算カーネル（Marlin, llamafileなど）の組み合わせ**  
  GPUとCPUの両方で最適化された行列演算が可能。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3872898/1c0031f2-c6e0-4c16-809f-cdd44e586c77.png)


---

## 3. DeepSeek-R1とは？
![rcv.YNA.20250129.PRU20250129086301009_P1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3872898/280d0886-79f6-4443-bc74-5914bb8d86b7.jpeg)



**DeepSeek-R1** は **671Bパラメータ** を備える超大規模言語モデルです。  
- **MoEアーキテクチャ** を採用し、実際に必要な計算リソースをスパースに使うことが可能。  
- しかし、完全版（フルパラメータ）をデータセンター以外で動かすには、莫大なGPUメモリが必要とされてきました。  
- 一方で **「部分的なExpertのみを使う」** アプローチなどを駆使することで、**オフロードを含む最適化** 次第では単一GPUでも動かせる可能性が示唆されてきました。

### **DeepSeek-R1の特徴**


#### ①**高精度な推論能力**
- **Chain-of-Thought（CoT）推論に対応**  
  DeepSeek-R1は、段階的な推論プロセスを通じて、より正確で説明可能な回答を生成できる **CoT（Chain-of-Thought）** を活用したモデルです。    
- **オープンソースとして提供**  
  OpenAIのGPT-4などとは異なり、**オープンに公開** されており、カスタマイズやローカル環境での利用が可能。  

#### ②**MoE構造**
- 必要に応じて専門家（Expert）を選択的に呼び出す設計。  
- 計算資源の効率的な活用により、フルモデルの推論コストを最適化。  
#### ③**効率的なリソース管理とオフロード最適化**  
- 通常は **数十〜数百GBのVRAM** を要するが、KTransformersによるオフロードにより、大幅なメモリ削減が可能。  
- **RTX 4090（24GB VRAM）でも一部推論が可能**（CPUオフロード + 量子化を活用）。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3872898/8aa07053-7db0-4c3e-8526-e1b1043e1ffb.png)


---

## 4. 最新アップデートと対応状況

KTransformersは以下のようなマイルストーンアップデートを行っています。

- **2025年2月10日**  (new!)
  - Deepseek-R1/V3を**24GB VRAMと382GB DRAM**でサポート。**推論速度3〜28倍**を達成。
- **2024年8月28日**  
  - InternLM2.5-7B-Chat-1Mモデルで1Mトークンのコンテキストをサポート（24GB VRAM + 150GB DRAM）。
  - DeepseekV2のVRAM要件を21GB→11GBへ削減。
- **2024年8月15日**  
  - “注入”とマルチGPU対応の詳細チュートリアルを公開。
- **2024年8月12日**  
  - mixtral 8×7B、8×22Bモデルに対応。GPU上でq2k, q3k, q5kなどの量子化をサポート。
- **2024年8月9日**  
  - Windowsネイティブをサポート。

これらのアップデートにより、**単一のRTX 4090上で671BのDeepSeek-R1を動作させる** という以前は不可能と思われたシナリオが、実現可能になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3872898/0771fb9f-454c-4b6e-84fe-8e4b24e86139.png)


---

## 5. 必要なハードウェア・環境構築
### ハードウェア要件

| 項目                 | 内容                                                                   |
|:--------------------:|:-----------------------------------------------------------------------|
| **GPU**             | 例：RTX 4090 （24GB VRAM）                                             |
| **CPU**             | 例：Intel Xeon Gold (2ソケット) など、合計32〜64コア推奨                |
| **DRAM（メモリ）**  | 200〜400GB以上（モデルのExpert部分をCPUにオフロードするため）           |
| **ストレージ**       | 数百GB〜TB級のSSD/HDD（モデルファイルを保存するため）                   |
| **OS**              | Windows 10/11 (WSL2), Ubuntu 20.04+, CentOS などを推奨                 |

> **メモ**： 実際には 14GB VRAM & 382GB DRAM で動作する報告もありますが、高速動作のためには 24GB GPU & 200GB 以上のメモリを推奨。

### ソフトウェア要件
- Python 3.10+（3.11推奨）
- CUDA 11.8〜12.x
- `pip`（または`conda`）  
- 最新のNVIDIAドライバ

---

## 6. インストール＆導入手順

### ステップ1：.whlファイルのダウンロード

```bash
wget https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
```

### ステップ2：.whlファイルのインストール

```bash
pip install ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
```

> **メモ**：Windowsの場合は、対応する`.whl`ファイルをダウンロードし、同様のコマンドでインストール可能です。

### ステップ3：ローカルチャット実行

```bash
python -m ktransformers.local_chat \
    --model_path <your_model_path> \
    --gguf_path <your_gguf_path> \
    --prompt_file <your_prompt_txt_file> \
    --cpu_infer 65 \
    --max_new_tokens 1000
```

- `--cpu_infer`: CPUを推論にどの程度活用するかを指定  
- `--prompt_file`: プロンプトとして与えるテキストファイルを指定  
- `--max_new_tokens`: 生成する最大トークン数

> **メモ**：詳細は[GitHubのチュートリアル](https://github.com/kvcache-ai/ktransformers/blob/main/doc/en/DeepseekR1_V3_tutorial.md)を参照。

---

## 7. CPU/GPU異構推論の仕組み

### MoE（混合専門家）アーキテクチャ

DeepSeek-R1は**MoE構造**を活用しており、実際に使用するのは**一部のExpert（専門家）** のみです。巨大なパラメータを全て読み込む必要がないため、**スパース化** によってメモリ負荷を軽減しています。

### GPUとCPUオフロードの役割分担

1. **GPU**  
   - 高い演算強度（MLAなど）を要求する部分を担当  
   - 稠密行列（Shared部分）の高速演算に特化  
2. **CPU/DRAM**  
   - それほど演算強度が高くない稀疏行列（Routed Expert）の保持・演算  
   - 巨大な専門家ネットワークをDRAM上に配置可能

この分担により、**24GBのGPUメモリでも671Bモデルを動かせる** 大きな理由となっています。

---

## 8. 性能指標とベンチマーク結果

KTransformersの開発チームが公開しているベンチマークでは、以下のような成果が得られています。

- **予填速度（Prefill）**  
  - KTransformers: 54.21 tokens/s (32コア) → 74.36 tokens/s (2ソケット×32コア) → **最大286.55 tokens/s (V0.3)**
  - これはllama.cpp (2ソケット×32コア) の 10.31 tokens/s と比較して **約28倍** の高速化。

- **デコード速度（Decode）**  
  - KTransformers: 8.73 tokens/s (32コア) → 13.69 tokens/s (選択的Expert活性化)  
  - llama.cpp (2ソケット×32コア) の 4.51 tokens/s と比較して **約3倍** の高速化。

> **AMX最適化と選択的Expert活性化（V0.3のプレビュー版機能）** を組み合わせることで、大幅な速度向上が期待されます。

---

## 9. 最適化のポイント

### 9.1 MLA算子とKV Cache削減

DeepSeek-R1はAttentionの要としてMLA算子を利用しています。KTransformersでは、MLA算子を**直接q_projやout_projに組み込む** 工夫により、  
- KV Cacheのサイズ削減  
- GPU演算の強化  
を同時に実現しています。

### 9.2 AMX最適化（CPU高速化）

v0.3プレビュー版では**Intel AMX** などの高度なCPU命令セットを活用し、CPU部分の演算効率を大幅に引き上げます。llama.cppと比べて**28倍**ほどの速度差が出る場面も確認されています。

### 9.3 CUDA GraphによるPython呼び出しの削減

KTransformersはPythonインターフェースで拡張性を高める一方、CUDA Graphを用いて  
- GPU⇔CPUの往復呼び出しを極力減らす  
- 推論全体をひとまとまりのグラフとして最適化  
することで高速化を図っています。


---

## 10. 今後の展望とまとめ

### 今後の開発ロードマップ

- v0.3正式版でAMX最適化や選択的Expert活性化が正式公開予定。
- 複数GPU間の高速通信（TP/PP）サポート拡充も検討中。

### DeepSeek-R1の可能性

- ローカル開発環境でコード補完や大規模ドキュメント解析を可能に。
- 中小企業でも完全版671Bモデルを活用しやすくなる。

### まとめ

巨大なLLMの推論コストを大幅に下げるフレームワークとして、KTransformers は既存の推論手法を刷新しつつあります。特に 671Bパラメータを搭載するDeepSeek-R1 のような超大規模モデルを、単一のPC で“現実的な速度”で動かせるのは画期的です。CPU/GPUの異構推論、選択的Expert活性化、量子化の柔軟な設定といった多彩なアプローチが組み合わさり、今までにない推論効率が実現されています。

これからもKTransformersのアップデートをチェックしつつ、ぜひご自身の環境で 「まさか671Bモデルが…？」 という体験をしてみてください！

### 参考リンク

- [KTransformers GitHubリポジトリ](https://github.com/kvcache-ai/ktransformers)
- [DeepseekR1-huggingface](https://huggingface.co/deepseek-ai/DeepSeek-R1)
- [Tutorial: Inject Operator Step by Step](https://github.com/kvcache-ai/ktransformers/blob/main/doc/en/injection_tutorial.md)