[備忘録] DeepSeekの蒸留モデルを量子化してローカルで動かしてみた

# はじめに
DeepSeekのdistillモデルの日本チューニング版である [cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japanese](https://huggingface.co/cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japanese)を量子化してローカルで生成をさせてみました。

量子化を手元でするのが初めてでしたので、備忘録として記事に残します。

# 実装
GPUとしてNVIDIA A100 80GBを使用しています。
また私の手元では`cuda:2`という名前でアクセスできるように設定されています。
実行時は手元の環境に合わせてください。

また、量子化にはbitsandbytesを使用しました。

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig


def main() -> None:
    # -- 定数 --
    DEVICE = "cuda:2"  # 適宜変えてください
    MODEL_NAME = "cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japanese"

    # -- 量子化の設定 --
    quantization_config = BitsAndBytesConfig(
        load_in_4bit=True,
        bnb_4bit_compute_dtype=torch.float16,
        bnb_4bit_quant_type="nf4",
        bnb_4bit_use_double_quant=True,
    )

    # -- モデルロード --
    model = AutoModelForCausalLM.from_pretrained(
        MODEL_NAME,
        quantization_config=quantization_config,
        device_map=DEVICE,
    )

    # -- トークナイザーの読み込み --
    tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)

    # -- チャットメッセージの定義 --
    messages = [
        {
            "role": "user",
            "content": "AIによって私たちの暮らしはどのように変わりますか？",
        }
    ]

    # -- チャット形式のプロンプトへ変換し、モデルのデバイスに転送 --
    input_ids = tokenizer.apply_chat_template(
        messages,
        add_generation_prompt=True,
        return_tensors="pt",
    ).to(model.device)

    # -- テキスト生成の実行 --
    output_ids = model.generate(
        input_ids,
        max_new_tokens=4096,
        temperature=0.7,
    )

    # -- 生成されたテキストのデコード --
    result_text = tokenizer.decode(
        output_ids[0],
        skip_special_tokens=True,
    )

    # -- 生成されたテキストの表示 --
    print(result_text)


if __name__ == "__main__":
    main()


```

<details><summary>出力はこちら</summary>

```
<｜User｜>AIによって私たちの暮らしはどのように変わりますか？<｜Assistant｜><think>
では、AIが私たちの暮らしをどう変えるのかについて考えてみます。まず、AIの技術が進歩しているので、いろんな分野で影響が出るでしょう。例えば、家電がAI搭載で、家事が楽になるかもしれません。スマートスピーカーやロボット掃除機などはすでに使われていますね。でも、これがさらに発展したらどうなるのかな？

次に、交通面では自動運転車が普及すると、移動時間が楽になるかもしれません。渋滞も解消されるかも。でも、自動運転車が一般化するには法律や倫理の問題もあるでしょう。事故の責任はどうなるのか、保険の問題も出てくるかもしれません。

医療面では、AIを使った診断が正確になるかもしれません。画像診断やデータ分析で病気の早期発見が可能になるでしょう。でも、プライバシーの問題や、人間の医師との役割の違いも課題になりそうです。

教育面では、AIが個別最適化された学習プログラムを提供するかもしれません。生徒の進捗に応じて教材を調整する。でも、教師の役割が変わるかもしれないし、デジタルデバイスへの依存が増えると、社会的な格差が生じる可能性も。

仕事の面では、AIが多くの業務を代替するかもしれません。自動化されない仕事は人間の創造性や対人スキルが必要になるでしょう。でも、失業問題が発生する可能性もあり、社会の構造が変わるかもしれません。

倫理的な問題も考えないといけません。AIの判断がバイアスを持っている場合、不公正が生じるかもしれません。データの取り扱いやプライバシーの保護も重要です。

また、AIの進化が人間の生活に与える影響は、ポジティブな面とネガティブな面の両方があるでしょう。テクノロジーをどう活用し、リスクを管理していくかが鍵になりそうです。
</think>

AIが私たちの暮らしを変える主な影響とその課題を以下のように整理しました：

---

### **1. 日常生活の利便性向上**
- **スマートホーム**：AI搭載家電が環境やユーザーの行動パターンを学習し、自動調節（照明、温度、家事支援）。
- **健康管理**：ウェアラブルデバイスが生理データをAI解析し、疾病予測や運動計画を提案。
- **買い物・配送**：AIが購買履歴から商品を推薦し、無人配送ロボットが荷物を届ける。

---

### **2. 交通・移動の革新**
- **自動運転**：渋滞解消や事故減少が期待される一方、法律（例：過失責任）や社会の信頼構築が課題。
- **公共交通最適化**：AIが需要予測し、バスや電車の運行スケジュールをリアルタイム調整。

---

### **3. 医療・健康分野**
- **超精密診断**：AIがCTやMRIを解析し、早期発見や治療法を提案。
- **個別化医療**：遺伝子データを基にAIが最適な薬剤を推定。
- **課題**：医師の役割の変化、プライバシー保護、医療格差。

---

### **4. 教育の変革**
- **カスタマイズ学習**：AIが生徒の弱点を分析し、教材や進度を調整。
- **VR/AR教育**：仮想空間で実験や歴史体験をシミュレーション。
- **課題**：デジタル格差の拡大、教師の役割再定義。

---

### **5. 仕事・産業構造の変化**
- **自動化**：AIが事務作業や工場作業を代替。人間は創造性・対人スキルを重視。
- **新しい職種**：AI監視技術者や倫理コンサルタントの需要増加。
- **課題**：失業リスク、人間の価値の再定義。

---

### **6. 社会インフラの進化**
- **エネルギー管理**：AIが需要予測で電力配分を最適化。
- **都市計画**：AIが交通渋滞や災害リスクを予測し、政策を提案。

---

### **7. 倫理・社会問題**
- **バイアス問題**：AIの判断が人種や性別に偏る可能性。
- **プライバシー**：大量のデータ収集が個人の自由を脅かす。
- **AIの意思決定責任**：事故時の責任主体が曖昧。

---

### **8. 人間の進化**
- **新しい人間関係**：AIとの共存が「人間らしさ」の定義を変える。
- **創造性の重要性**：AIが代替できない領域（芸術、感情共有）が価値化。

---

### **まとめ**
AIは利便性と効率を劇的に向上させる一方で、倫理・社会構造の再構築が必須です。技術の進化は速くても、人間の価値観や制度の整備が追いつくかが鍵となります。最終的には、AIを「人間の拡張ツール」として、バランスの取れた共生社会を目指すべきでしょう。
```

</details>

# おわりに
今回は単に量子化して生成をしただけですが、RAG構築やアプリ開発にも活かしていきたいと思います！

記事中の誤字や誤り等ありましたら、コメントや編集リクエストでご指摘いただけると幸いです。