File size: 4,570 Bytes
269a53a
 
702ee7d
 
 
 
 
269a53a
 
8be9945
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
---
library_name: transformers
language:
- ja
- en
base_model:
- llm-jp/llm-jp-3-172b-instruct3
---

# 4-bit 量子化版 llm-jp-3-172b-instruct3

本リポジトリでは、大学共同利用機関法人情報・システム研究機構 国立情報学研究所(以下「NII」)が提供する「llm-jp-3-172b-instruct3」(以下「本モデル」) を 4-bit 量子化した派生モデル (以下「本量子化モデル」) を公開しています。

> **Built with llm-jp-3-172b-instruct3**

---

## 概要

- **元モデル**  
  - 名称: [llm-jp-3-172b-instruct3]  
  - 提供元: 大学共同利用機関法人情報・システム研究機構 (ROIS) 国立情報学研究所 (NII)  
  - ライセンス: 「llm-jp-3-172b-instruct3利用許諾契約」 (本リポジトリにも同梱)

- **本量子化モデルの目的**  
  - 4-bit 量子化を適用し、大規模モデルの推論時における GPU/メモリ使用量の削減を実現するために作成しました。
  - モデル容量は 4-bit 量子化により削減されますが、内部的には `uint8` + スケール情報を持つ BitsAndBytes (fp4 形式) で格納されており、演算時には float16/float32 を用います。

---
## インストール・利用方法

1. **環境準備**

   ```bash
   pip install transformers>=4.47 bitsandbytes>=0.39.0
   ```

2. **モデルのロード例 (Python)**

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

   # 4-bit 量子化設定
   quantization_config = BitsAndBytesConfig(
       load_in_4bit=True,
       bnb_4bit_compute_dtype=torch.float32,  # 演算時には float32
       bnb_4bit_quant_type="fp4",            # FP4 量子化
       bnb_4bit_quant_storage="uint8"
   )

   # モデル・トークナイザをロード
   model_name_or_path = "path/to/4bit-quantized-llm-jp-3-172b-instruct3"
   tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
   model = AutoModelForCausalLM.from_pretrained(
       model_name_or_path,
       quantization_config=quantization_config,
       device_map="auto",
       trust_remote_code=True
   )

   # 推論テスト
   prompt = "日本語での応答例を示してください。"
   inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
   output_ids = model.generate(**inputs, max_new_tokens=128)
   print(tokenizer.decode(output_ids[0], skip_special_tokens=True))
   ```

3. **GPU メモリ削減効果の確認 (オプション)**  
   - 量子化モデルをロードした際の `torch.cuda.memory_allocated()` を確認すると、FP16/FP32 モデルよりもメモリ使用量が削減されているはずです。

---

## ライセンス

本量子化モデルは、**元モデル「llm-jp-3-172b-instruct3」** を利用し作成した派生モデルです。  
以下の条件に従い利用が可能です。

1. 本量子化モデルに含まれる元モデル部分に関しては、**「[llm-jp-3-172b-instruct3利用許諾契約](./LICENSE)」** (以下「本契約」) に準拠します。  
2. 本量子化モデルを再配布または利用可能にする場合は、**本契約書のコピーを添付** し、かつドキュメント等に下記の表示を行ってください:  
   > 「Built with llm-jp-3-172b-instruct3」  
3. 本量子化モデル内に含まれる元モデルとその派生モデル部分に対しては、本契約に記載のとおり **著作権表示** を明示してください:  
   > 「llm-jp-3-172b-instruct3 は llm-jp-3-172b-instruct3利用許諾契約に基づきライセンスされています。  
   > Copyright (c) 2024 Research Organization of Information and Systems.  
   > すべての権利を留保します。」

---

## 注意事項・免責

- **本量子化モデルは「現状有姿」で提供されます**。元モデルと同様に、正確性、完全性、商品性、特定目的への適合性など、いかなる保証も行いません。  
- 本モデルおよびその出力の利用により生じる結果や損害について、開発者・提供者は責任を負いかねます。  
- 詳細は、同梱の「llm-jp-3-172b-instruct3利用許諾契約」をご参照ください。
---

## 謝辞

- 本モデルの開発にあたり、大学共同利用機関法人情報・システム研究機構 国立情報学研究所 (ROIS/NII) が提供する大規模言語モデル「llm-jp-3-172b-instruct3」を使用しました。

---