Skip to content

Commit 33fc141

Browse files
authored
Merge pull request #12 from eltociear/add-japanese-readme
docs: add Japanese README
2 parents 165dc5a + 43cc700 commit 33fc141

File tree

3 files changed

+334
-2
lines changed

3 files changed

+334
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
[![Discord Banner](https://img.shields.io/discord/1139835312592392214?logo=discord&logoColor=white)](https://discord.gg/qZKUDfhm)
1010
[![QQ](https://img.shields.io/badge/QQ-EB1923?logo=tencent-qq&logoColor=white)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=I9IGPWWj8uuRXWH3_ELWjouf6gkIMgUl&authKey=GA3WbFAsm90ePJf%2FCbc7ZyXXq4ShQktlBaLxgqS5yuSPAsr3%2BDKMRdosUiLYoilO&noverify=0&group_code=526192592)
1111

12-
**\[ English | [中文](README_zh.md) \]**
12+
**\[ English | [中文](README_zh.md) | [日本語](README_ja.md) \]**
1313

1414
**llmc** is an off-the-shell tool designed for compressing LLM, leveraging state-of-the-art compression algorithms to enhance efficiency and reduce model size without compromising performance.
1515

README_ja.md

Lines changed: 332 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,332 @@
1+
# llmc: 正確で効率的なLLM圧縮に向けて
2+
3+
<img src="./imgs/llmc.png" alt="llmc" style="zoom:35%;" />
4+
5+
[![ライセンス](https://img.shields.io/badge/ライセンス-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6+
[![arXiv](https://img.shields.io/badge/LLM--QBench-2405.06001-b31b1b)](https://arxiv.org/abs/2405.06001)
7+
[![GitHub スター](https://img.shields.io/github/stars/ModelTC/llmc.svg?style=social&label=Star&maxAge=60)](https://github.com/ModelTC/llmc)
8+
![訪問者](https://komarev.com/ghpvc/?username=llmc&label=visitors)
9+
[![Discord バナー](https://img.shields.io/discord/1139835312592392214?logo=discord&logoColor=white)](https://discord.gg/qZKUDfhm)
10+
[![QQ](https://img.shields.io/badge/QQ-EB1923?logo=tencent-qq&logoColor=white)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=I9IGPWWj8uuRXWH3_ELWjouf6gkIMgUl&authKey=GA3WbFAsm90ePJf%2FCbc7ZyXXq4ShQktlBaLxgqS5yuSPAsr3%2BDKMRdosUiLYoilO&noverify=0&group_code=526192592)
11+
12+
**\[ [English](README.md) | [中文](README_zh.md) | 日本語 \]**
13+
14+
**llmc** は、最先端の圧縮アルゴリズムを活用して、パフォーマンスを損なうことなく効率を向上させ、モデルサイズを削減することを目的とした、オフ・ザ・シェルフのツールです。
15+
16+
**英語のドキュメント**[こちら](https://llmc-en.readthedocs.io/en/latest/)です。
17+
18+
**中国語のドキュメント**[こちら](https://llmc-zhcn.readthedocs.io/en/latest/)です。
19+
20+
**コミュニティ**:
21+
* [Discord サーバー](https://discord.gg/qZKUDfhm)
22+
* [Tencent QQ グループ](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=I9IGPWWj8uuRXWH3_ELWjouf6gkIMgUl&authKey=GA3WbFAsm90ePJf%2FCbc7ZyXXq4ShQktlBaLxgqS5yuSPAsr3%2BDKMRdosUiLYoilO&noverify=0&group_code=526192592)
23+
24+
## ニュース
25+
26+
* **2024年7月16日:** 🔥現在、llmのスパース化と層間混合ビット量子化のためのWanda/Naive(Magnitude)をサポートしています!
27+
28+
* **2024年7月14日:** 🔥現在、回転ベースの量子化QuaRotをサポートしています!
29+
30+
* **2024年7月4日:** 📱 ディスカッションチャンネルを開設しました。質問がある場合は、コミュニティに参加してください:
31+
* [Discord サーバー](https://discord.gg/qZKUDfhm)
32+
* [Tencent QQ グループ](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=I9IGPWWj8uuRXWH3_ELWjouf6gkIMgkUl&authKey=GA3WbFAsm90ePJf%2FCbc7ZyXXq4ShQktlBaLxgqS5yuSPAsr3%2BDKMRdosUiLYoilO&noverify=0&group_code=526192592)
33+
34+
* **2024年5月17日:** 🚀 現在、LLaVA、Mixtral、LLaMA V3、Qwen V2などの高度な大規模モデルをサポートしています。試してみてください!
35+
36+
* **2024年5月13日:** 🍺🍺🍺 量子化ベンチマーク論文を発表しました:
37+
38+
[**LLM-QBench: 大規模言語モデルのポストトレーニング量子化のベストプラクティスに向けたベンチマーク**](https://arxiv.org/abs/2405.06001).
39+
40+
[Ruihao Gong*](https://xhplus.github.io/), [Yang Yong*](https://github.com/helloyongyang), [Shiqiao Gu*](https://github.com/gushiqiao), [Yushi Huang*](https://github.com/Harahan), [Yunchen Zhang](https://scholar.google.com/citations?user=glkWFyUAAAAJ&hl=en), [Xianglong Liu📧](https://xlliu-beihang.github.io/), [Dacheng Tao](https://scholar.google.com/citations?user=RwlJNLcAAAAJ&hl=en)
41+
42+
(* は同等の貢献を示し、📧 は対応する著者を示します。)
43+
44+
<div align=center>
45+
<img src="./imgs/best_practice.png" alt="comp" width="800" />
46+
</div>
47+
48+
校正コスト、推論効率、および量子化精度を考慮して、量子化技術をモジュール化し、公平にベンチマークしました。多様なモデルとデータセットでの約600の実験が、校正データ、アルゴリズムパイプライン、および量子化構成の選択に関する3つの洞察を提供します。これらの洞察に基づいて、LLM PTQパイプラインのベストプラクティスが設計され、さまざまなシナリオで最高の精度と効率のパフォーマンスバランスを実現します。
49+
50+
* **2024年3月7日:** 🚀 強力で効率的なLLM圧縮ツールの量子化部分をリリースしました。注目すべきは、ベンチマーク論文が近日公開予定です😊。
51+
52+
## ハイライト機能
53+
54+
* LLMs(例:Llama2-70B、OPT-175B)を量子化し、1つのA100/H100/H800 GPUでPPLを評価します💥。
55+
* ユーザーが選択できる最先端の圧縮アルゴリズムが[元のリポジトリと一致](benchmark/align.md)し、ユーザーは1つのLLMで複数のアルゴリズムを順次使用できます💥。
56+
* 特定の圧縮アルゴリズムでツールによってエクスポートされた変換モデル([構成](#構成)``quant``部分の``save_trans``モード)は、複数のバックエンド(例:[Lightllm](https://github.com/ModelTC/lightllm)[TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM))によって単純な量子化を行い、特定の圧縮アルゴリズムで最適化されたモデルを取得できます。対応するバックエンドが推論できます💥。
57+
* 浅いメモリフットプリントを持つ圧縮モデル([構成](#構成)``quant``部分の``save_lightllm``モード)は、[Lightllm](https://github.com/ModelTC/lightllm)によって直接推論できます💥。
58+
59+
## 使用方法
60+
61+
1. このリポジトリをクローンし、パッケージをインストールします:
62+
63+
```shell
64+
# パッケージをインストール
65+
cd llmc
66+
pip install -r requirements.txt
67+
```
68+
69+
2. モデルとデータを準備します。
70+
71+
```shell
72+
# huggingfaceからLLMをダウンロードした後、次のように校正データと評価データを準備します:
73+
cd tools
74+
python download_calib_dataset.py --save_path [校正データパス]
75+
python download_eval_dataset.py --save_path [評価データパス]
76+
```
77+
78+
3. アルゴリズムを選択してモデルを量子化します:
79+
80+
```shell
81+
# これはAwqに関する例です:
82+
cd scripts
83+
# bashファイル内のllmcのパス``llmc_path``を変更します。``llmc/configs/quantization/Awq/``に配置された構成の1つを選択してモデルを量子化するか、run_awq_llama.shの``--config``引数を変更して提供された構成を使用します。
84+
bash run_awq_llama.sh
85+
```
86+
87+
## 構成
88+
89+
ユーザーが構成を設計するのを支援するために、``llmc/configs/``の下に提供されているすべての構成のいくつかの一般的な構成を説明します:
90+
91+
* ``model``:
92+
93+
```yaml
94+
model:
95+
# ``llmc/models/*.py``のクラス名に置き換えます。
96+
type: Llama
97+
# モデルのパスに置き換えます。
98+
path: model path
99+
torch_dtype: auto
100+
```
101+
102+
* ``calib``:
103+
104+
```yaml
105+
# 注意:一部のアルゴリズムには``calib``が必要ありません。例:naive... したがって、この部分を削除できます。
106+
calib:
107+
# 以前にダウンロードした校正データ名に置き換えます。例:pileval、c4、wikitext2、またはptb。
108+
name: pileval
109+
download: False
110+
# 以前にダウンロードした校正データの1つのパスに置き換えます。例:pileval、c4、wikitext2、またはptb。
111+
path: calib data path
112+
n_samples: 128
113+
bs: -1
114+
seq_len: 512
115+
# ``llmc/data/dataset/specified_preproc.py``の関数名に置き換えます。
116+
preproc: general
117+
seed: *seed
118+
```
119+
120+
* ``eval``:
121+
122+
```yaml
123+
# 事前トレーニング/変換/偽量子化モデルのPPLを評価したい場合。
124+
eval:
125+
# 事前トレーニング、変換、偽量子化モデルを評価し、評価したい位置を設定できます。
126+
eval_pos: [pretrain, transformed, fake_quant]
127+
# 以前にダウンロードした評価データの名前に置き換えます。例:c4、wikitext2、ptb、または[c4, wikitext2]。
128+
name: wikitext2
129+
download: False
130+
path: eval data path
131+
# 70Bモデルの評価の場合、bsを20に設定し、inference_per_blockをTrueに設定できます。
132+
# 7B / 13Bモデルの評価の場合、bsを1に設定し、inference_per_blockをFalseに設定できます。
133+
bs: 1
134+
inference_per_block: False
135+
seq_len: 2048
136+
```
137+
138+
* ``save``:
139+
140+
```yaml
141+
save:
142+
# ``save_trans``がTrueの場合、変換モデル(例:パラメータが変更されたモデル)をエクスポートしたいことを意味します。パフォーマンスと構造は元のモデルと同じであり、ユーザーは単純な量子化を使用して、特定のアルゴリズムで量子化されたモデルと同じパフォーマンスを得ることができます。
143+
save_trans: False
144+
# ``save_lightllm``がTrueの場合、実際の量子化モデル(例:低ビットの重みと重みおよびアクティベーションの量子化パラメータ)をエクスポートしたいことを意味します。
145+
save_lightllm: False
146+
# ``save_fake``がTrueの場合、偽量子化モデル(例:量子化解除された重みとアクティベーションの量子化パラメータ)をエクスポートしたいことを意味します。
147+
save_fake: False
148+
save_path: ./save
149+
```
150+
151+
* ``quant``:
152+
153+
```yaml
154+
quant:
155+
# ``llmc/compression/quantization/*.py``のクラス名に置き換えます。
156+
method: OmniQuant
157+
# 重みのみの量子化には``act``部分がありません。
158+
weight:
159+
bit: 8
160+
symmetric: True
161+
# 量子化の粒度:per_channel、per_tensor、per_head(推奨されません)。
162+
granularity: per_channel
163+
group_size: -1
164+
# 校正アルゴリズム:learnble、mse、およびminmax(デフォルト)。
165+
calib_algo: learnable
166+
# ストレートスルー推定を使用します。これは、学習可能な校正アルゴリズムに必要です。
167+
ste: True
168+
act:
169+
bit: 8
170+
symmetric: True
171+
# 量子化の粒度:per_token、per_tensor
172+
granularity: per_token
173+
ste: True
174+
# 静的量子化(校正中の量子化)または動的量子化(推論中の量子化)。
175+
static: True
176+
# この部分は特定のアルゴリズム用に設計されており、提供されているものを参考にして独自のアルゴリズムを設計できます。
177+
special:
178+
let: True
179+
lwc_lr: 0.01
180+
let_lr: 0.005
181+
use_shift: False
182+
alpha: 0.5
183+
deactive_amp: True
184+
epochs: 20
185+
wd: 0
186+
# quant_outがTrueの場合、前の量子化ブロックの出力を次のブロックの校正データとして使用します。
187+
quant_out: True
188+
```
189+
190+
## サポートされているモデルリスト
191+
192+
✅ [BLOOM](https://huggingface.co/bigscience/bloom)
193+
194+
✅ [LLaMA](https://github.com/facebookresearch/llama)
195+
196+
✅ [LLaMA V2](https://huggingface.co/meta-llama)
197+
198+
✅ [StarCoder](https://github.com/bigcode-project/starcoder)
199+
200+
✅ [OPT](https://huggingface.co/docs/transformers/model_doc/opt)
201+
202+
✅ [Falcon](https://huggingface.co/docs/transformers/model_doc/falcon)
203+
204+
✅ [InternLM2](https://huggingface.co/internlm)
205+
206+
✅ [Mistral](https://huggingface.co/docs/transformers/model_doc/mistral)
207+
208+
✅ [LLaMA V3](https://huggingface.co/meta-llama)
209+
210+
✅ [Mixtral](https://huggingface.co/docs/transformers/model_doc/mixtral)
211+
212+
✅ [Qwen V2](https://github.com/QwenLM/Qwen2)
213+
214+
✅ [LLaVA](https://github.com/haotian-liu/LLaVA)
215+
216+
``llmc/models/*.py``の下のファイルを参照して、独自のモデルタイプを追加できます。
217+
218+
## サポートされているアルゴリズムリスト
219+
220+
### 量子化
221+
222+
✅ Naive
223+
224+
✅ [AWQ](https://arxiv.org/abs/2306.00978)
225+
226+
✅ [GPTQ](https://arxiv.org/abs/2210.17323)
227+
228+
✅ [SmoothQuant](https://arxiv.org/abs/2211.10438)
229+
230+
✅ [OS+](https://arxiv.org/abs/2304.09145)
231+
232+
✅ [OmniQuant](https://arxiv.org/abs/2308.13137)
233+
234+
✅ [NormTweaking](https://arxiv.org/abs/2309.02784)
235+
236+
✅ [AdaDim](https://arxiv.org/pdf/2309.15531.pdf)
237+
238+
✅ [QUIK](https://arxiv.org/abs/2310.09259)
239+
240+
✅ [SpQR](https://arxiv.org/abs/2306.03078)
241+
242+
✅ [DGQ](https://arxiv.org/abs/2310.04836)
243+
244+
✅ [OWQ](https://arxiv.org/abs/2306.02272)
245+
246+
✅ [LLM.int8()](https://arxiv.org/abs/2208.07339)
247+
248+
✅ [HQQ](https://mobiusml.github.io/hqq_blog/)
249+
250+
✅ [QuaRot](https://arxiv.org/abs/2404.00456)
251+
252+
### 剪定
253+
254+
✅ Naive(Magnitude)
255+
256+
✅ [Wanda](https://arxiv.org/abs/2306.11695)
257+
258+
## TODOリスト
259+
260+
### 量子化
261+
262+
- [ ] QuIP
263+
264+
- [ ] QuIP#
265+
266+
- [ ] AQLM
267+
268+
**注意:** QUIK、SpQRなどの特定のアルゴリズムは、特別なハードウェアやカーネルのサポートが必要であり、複数のバックエンドによる単純な量子化を行い、これらのバックエンドを使用して推論することはできません。ただし、ユーザーは引き続きツールを使用して、研究におけるこれらのアルゴリズムのパフォーマンスを評価できます。
269+
270+
### 剪定
271+
272+
- [ ] SparseGPT
273+
274+
- [ ] LLM-Pruner
275+
276+
この部分は近日公開予定です🚀。
277+
278+
### ドキュメント
279+
280+
- [ ] モデルを圧縮し、複数のバックエンド(例:[Lightllm](https://github.com/ModelTC/lightllm)、[TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM))を使用して推論するエンドツーエンドの例。
281+
282+
- [ ] 異なるアルゴリズムの``quant``部分の``special``に関するドキュメント。
283+
284+
- [ ] ユーザーが独自に新しいアルゴリズムを追加するためのドキュメント。
285+
286+
より詳細なドキュメントは近日公開予定です🚀。
287+
288+
## 謝辞
289+
290+
以下のリポジトリを参考にしてコードを開発しました:
291+
292+
* https://github.com/mit-han-lab/llm-awq
293+
* https://github.com/mit-han-lab/smoothquant
294+
* https://github.com/OpenGVLab/OmniQuant
295+
* https://github.com/IST-DASLab/gptq
296+
* https://github.com/ModelTC/Outlier_Suppression_Plus
297+
* https://github.com/IST-DASLab/QUIK
298+
* https://github.com/Vahe1994/SpQR
299+
* https://github.com/ilur98/DGQ
300+
* https://github.com/xvyaward/owq
301+
* https://github.com/TimDettmers/bitsandbytes
302+
* https://github.com/mobiusml/hqq
303+
* [https://github.com/spcl/QuaRot](https://github.com/spcl/QuaRot)
304+
* [https://github.com/locuslab/wanda](https://github.com/locuslab/wanda)
305+
306+
## スター履歴
307+
308+
[![スター履歴チャート](https://api.star-history.com/svg?repos=ModelTC/llmc&type=Timeline)](https://star-history.com/#ModelTC/llmc&Timeline)
309+
310+
## 引用
311+
312+
LLM-QBench論文/llmcツールキットが研究に役立つまたは関連している場合は、論文を引用してください:
313+
314+
```
315+
@misc{llmc,
316+
author = {llmc contributors},
317+
title = {llmc: Towards Accurate and Efficient LLM Compression},
318+
year = {2024},
319+
publisher = {GitHub},
320+
journal = {GitHub repository},
321+
howpublished = {\url{https://github.com/ModelTC/llmc}},
322+
}
323+
324+
@misc{gong2024llmqbench,
325+
title={LLM-QBench: A Benchmark Towards the Best Practice for Post-training Quantization of Large Language Models},
326+
author={Ruihao Gong and Yang Yong and Shiqiao Gu and Yushi Huang and Yunchen Zhang and Xianglong Liu and Dacheng Tao},
327+
year={2024},
328+
eprint={2405.06001},
329+
archivePrefix={arXiv},
330+
primaryClass={cs.LG}
331+
}
332+
```

README_zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[![Discord Banner](https://img.shields.io/discord/1139835312592392214?logo=discord&logoColor=white)](https://discord.gg/qZKUDfhm)
99
[![QQ](https://img.shields.io/badge/QQ-EB1923?logo=tencent-qq&logoColor=white)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=I9IGPWWj8uuRXWH3_ELWjouf6gkIMgUl&authKey=GA3WbFAsm90ePJf%2FCbc7ZyXXq4ShQktlBaLxgqS5yuSPAsr3%2BDKMRdosUiLYoilO&noverify=0&group_code=526192592)
1010

11-
**\[ [English](https://github.com/ModelTC/llmc?tab=readme-ov-file#llmc-towards-accurate-and-efficient-llm-compression) | 中文 \]**
11+
**\[ [English](https://github.com/ModelTC/llmc?tab=readme-ov-file#llmc-towards-accurate-and-efficient-llm-compression) | 中文 | [日本語](README_ja.md) \]**
1212

1313
**llmc** 是一个即插即用的工具,旨在通过最先进的压缩算法进行大型语言模型的压缩,以提高效率并减小模型大小,同时不牺牲性能。
1414

0 commit comments

Comments
 (0)