mcpField
M
msmodelslim

msmodelslim

github.com/ascend-ai-coding開発17844 回インストール2 週間前に更新
リポジトリ

msmodelslim について

msModelSlimは、Huawei Ascend AIプロセッサ向けのモデル圧縮ツールです。LLM、MoE、マルチモーダルモデルを扱う開発者向けに、複数の量子化方式、感度分析、精度調整を提供し、対応モデルには一括設定を利用できます。

主な機能

  1. 01LLM・MoE・マルチモーダルモデルの量子化
  2. 02設定ファイルによる一括量子化
  3. 03複数の量子化形式とアルゴリズム
  4. 04感度の高いレイヤーの分析と精度調整
  5. 05カスタムモデルアダプターの追加

活用シーン

  1. 01Ascend推論向けのモデル圧縮
  2. 02長いシーケンス処理向けの量子化方式選定
  3. 03感度分析後の精度調整
  4. 04カスタムモデルの対応追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ascend-ai-coding/awesome-ascend-skills --skill msmodelslim

インストール後、Claude Code で/msmodelslimを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
quant_config_pdmix.yaml
quant_config_sparse.yaml
quant_config_w4a8.yaml
quant_config_w8a8.yaml
references/
deployment.md
docker-setup.md
example-scripts.md
installation.md
model-integration.md
model-support.md
precision-tuning.md
quantization-algorithms.md
scripts/
check_env.sh
model_adapter_template.py
quantize_model.sh

詳細

msModelSlim - Ascend モデル圧縮ツール

MindStudio ModelSlim(msModelSlim)は、Huawei Ascend AI プロセッサ向けに最適化されたモデル圧縮ツールです。LLM、MoE モデル、マルチモーダルモデルの量子化と圧縮に対応しています。


クイックスタート

ワンクリック量子化(V1 - 推奨)

V1 の自動量子化では、lab_practice/ ディレクトリ内の設定ファイルを使用します。

# Basic W8A8 quantization for Qwen2.5-7B-Instruct
# Config files located at: lab_practice/<model_series>/<model>-<quant_type>-v1.yaml
msmodelslim quant \
    --model_path /path/to/Qwen2.5-7B-Instruct \
    --save_path /path/to/output \
    --device npu \
    --model_type Qwen2.5-7B-Instruct \
    --config_path /path/to/msmodelslim/lab_practice/qwen2.5/qwen2.5-7b-w8a8-v1.yaml \
    --trust_remote_code True

# MoE model quantization (Qwen3-30B-A3B W4A8)
msmodelslim quant \
    --model_path /path/to/Qwen3-30B-A3B \
    --save_path /path/to/output \
    --device npu \
    --model_type Qwen3-30B \
    --config_path /path/to/msmodelslim/lab_practice/qwen3_moe/qwen3-30b-w4a8-v1.yaml \
    --trust_remote_code True

# Multi-device distributed quantization
msmodelslim quant \
    --model_path /path/to/model \
    --save_path /path/to/output \
    --device npu:0,1,2,3 \
    --model_type Qwen2.5-72B-Instruct \
    --config_path /path/to/msmodelslim/lab_practice/qwen2.5/qwen2.5-72b-w8a8c8-v1.yaml \
    --trust_remote_code True

注:msmodelslim リポジトリの lab_practice/ ディレクトリにある設定ファイルを確認してください。

  • 構成:lab_practice/<model_series>/<model>-<quant_type>-v1.yaml
  • 例:lab_practice/qwen2.5/qwen2.5-7b-w8a8-v1.yaml
従来の量子化(V0)
cd msmodelslim
python3 example/Qwen/quant_qwen.py \
    --model_path /path/to/Qwen2.5-7B-Instruct \
    --save_directory /path/to/output \
    --calib_file example/common/boolq.jsonl \
    --w_bit 8 --a_bit 8 \
    --device_type npu \
    --trust_remote_code True

インストール

前提条件
  • Python:3.8 以降(一部の環境では 3.9 以降を推奨)
  • CANN:8.2.RC1 以降(8.3.RC1 または 8.5.0 を推奨)
  • PyTorch Ascend:PyTorch 用 Ascend 拡張機能
インストール手順
# 1. Clone repository
git clone https://gitcode.com/Ascend/msmodelslim.git
cd msmodelslim

# 2. Run installation script
bash install.sh

# 3. For Atlas 300I Duo (sparse quantization support)
cd ${PYTHON_SITE_PACKAGES}/msmodelslim/pytorch/weight_compression/compress_graph/
sudo bash build.sh ${CANN_INSTALL_PATH}/ascend-toolkit/latest
chmod -R 550 build

注:モジュールパスの競合を避けるため、ソースディレクトリ内から msmodelslim コマンドを実行しないでください。

環境設定の詳細については、references/installation.mdを参照してください。


量子化タイプ

タイプ重みアクティベーション説明使用例
W8A8INT8INT8標準的な 8 ビット量子化汎用、精度と性能のバランス
W8A16INT8FP16重みのみの量子化より高い精度が必要な場合(MindIE のみ)
W4A8INT4INT8低ビット重み量子化より高い圧縮率
W8A8C8INT8INT8 + KV CacheKV Cache 量子化あり長いシーケンスの推論
W8A8SINT8 SparseINT8スパース量子化Atlas 300I Duo の最適化
W16A16SFP16 SparseFP16浮動小数点スパース量子化高い圧縮率が必要な場合
量子化タイプの選択
優先事項推奨タイプ
精度優先W8A16 > W8A8 > W4A8
メモリ優先W4A8 > W8A8 > W8A16
長いシーケンスW8A8C8(KV Cache 量子化あり)
Atlas 300I DuoW8A8S または W16A16S
BFLOAT16 モデルに関する注意事項

torch_dtype=bfloat16 の重みを持つモデル(例:Qwen3-30B-A3B)について:

AclNN_Parameter_Error(EZ1001): Tensor self not implemented for DT_BFLOAT16 が発生した場合、msmodelslim の制限ではなく、Docker イメージの問題である可能性があります。

簡易診断:

# Test if torch_npu works correctly
python3 -c "import torch; import torch_npu; a = torch.tensor(1).npu(); print('NPU OK')"

これが失敗する場合、Docker イメージに互換性の問題があります。次の方法をお試しください。

  1. 別の、または更新済みの Docker イメージを使用する
  2. CANN のバージョンに合った torch_npu を再インストールする
  3. BF16 をサポートする CANN 8.3.RC1 以降を使用する

コンテナの設定:NPU デバイスのマッピングを含む適切な Docker コンテナの作成方法については、ascend-dockerを参照してください。msmodelslim 固有のコンテナ設定については、references/docker-setup.mdを参照してください。


アルゴリズムの選択

外れ値抑制アルゴリズム
アルゴリズム説明使用する状況
SmoothQuantアクティベーションと重みを協調スケーリング標準的な外れ値抑制
QuaRot直交回転行列高い精度が求められる場合
Iterative Smooth反復的な平滑化複雑な分布
Flex Smooth最適な alpha/beta をグリッド検索アーキテクチャが異なる場合
KV SmoothKV Cache の平滑化KV Cache の量子化
量子化アルゴリズム
アルゴリズム説明使用する状況
AutoRound丸め処理のための SignSGD 最適化4 ビット超低ビット量子化
GPTQ列単位の最適化高精度の重み量子化
SSZスケール/オフセットの反復探索重み分布に偏りがある場合
PDMIX動的(prefill)+ 静的(decode)大規模モデルの推論
FA3ヘッドごとの INT8 アテンション長いシーケンス、MLA モデル
MinMax最小値と最大値の範囲統計基本的な量子化
Histogramヒストグラム分布の分析外れ値の除外
クイック選択ガイド
  • 初心者:--config_path に lab_practice/ の設定ファイルを指定して、ワンクリック量子化を使用します
  • 精度優先:QuaRot + AutoRound
  • 長いシーケンス:FA3 + KVCache Quant
  • カスタムモデル:references/model-integration.md を参照してください

アルゴリズムの詳細は、references/quantization-algorithms.md を参照してください。


対応モデル

大規模言語モデル
モデルシリーズワンクリックV0 スクリプト備考
Qwen3✓example/Qwen/Qwen3-8B/14B/32B
Qwen2.5✓example/Qwen/7B/32B/72B/Coder
Qwen2-example/Qwen/7B/72B
DeepSeek-V3✓example/DeepSeek/V3/V3.1/V3.2、R1
LLaMA-example/Llama/LLaMA2、LLaMA3.1
GLM-example/GLM/GLM-4、GLM-5
InternLM2-example/InternLM2/InternLM2-20B
Kimi-example/Kimi/Kimi K2
HunYuan-example/HunYuan/HunYuan-A52B
MoE モデル
モデルワンクリック備考
Qwen3-MoE✓Qwen3-30B-A3B、Qwen3-235B-A22B
DeepSeek MoE✓DeepSeek-V2、V3 シリーズ
マルチモーダルモデル
種類モデルサンプルスクリプト
視覚・言語Qwen-VL、Qwen2-VL、Qwen3-VL、InternVL2、LLaVA、GLM-4.1Vexample/multimodal_vlm/
生成FLUX、SD3、HunyuanVideo、OpenSoraPlan、Wan2.1example/multimodal_sd/

完全な対応状況一覧は、references/model-support.md を参照してください。


カスタムモデルの統合

クイック概要
  1. アダプターファイルを作成:msmodelslim/model/my_model/model_adapter.py
  2. アダプタークラスを定義:TransformersModel とインターフェースクラスを継承します
  3. インターフェースを実装:handle_dataset、init_model、generate_model_visit など
  4. モデルを登録:config/config.ini に追加します
例
from msmodelslim.model.interface_hub import ModelSlimPipelineInterfaceV1
from msmodelslim.model.common.transformers import TransformersModel

class MyModelAdapter(TransformersModel, ModelSlimPipelineInterfaceV1):
    def handle_dataset(self, dataset, device):
        return self._get_tokenized_data(dataset, device)
    
    def init_model(self, device):
        return self._load_model(device)
    
    def generate_model_visit(self, model):
        from msmodelslim.model.common.layer_wise_forward import generated_decoder_layer_visit_func
        yield from generated_decoder_layer_visit_func(model)
    
    def generate_model_forward(self, model, inputs):
        from msmodelslim.model.common.layer_wise_forward import transformers_generated_forward_func
        yield from transformers_generated_forward_func(model, inputs)

詳しい手順は、references/model-integration.md と scripts/model_adapter_template.py を参照してください。


精度の自動調整

敏感なレイヤーの分析
# Analyze model sensitivity
msmodelslim analyze --model_path /path/to/model --model_type Qwen2.5-7B-Instruct

分析アルゴリズム:

  • std:標準偏差ベース(一般的な用途に推奨)
  • quantile:分位数/IQR ベース(裾の長い分布向け)
  • kurtosis:尖度ベース(極端な値の検出向け)
自動調整戦略

Standing High:精度を維持しながら、フォールバックレイヤーを最小限に抑えるための二分探索です。

# Use auto-tuning config
msmodelslim quant \
    --model_path /path/to/model \
    --save_path /path/to/output \
    --model_type Qwen2.5-7B-Instruct \
    --config_path /path/to/auto_tuning_config.yaml

調整戦略については、references/precision-tuning.md を参照してください。


デプロイ

vLLM-Ascend
# Online service
vllm serve /path/to/quantized-model \
    --served-model-name "Qwen2.5-7B-w8a8" \
    --max-model-len 4096 \
    --quantization ascend

# Offline inference (Python)
from vllm import LLM, SamplingParams

llm = LLM(
    model="/path/to/quantized-model",
    max_model_len=4096,
    quantization="ascend"
)
outputs = llm.generate(["Hello"], SamplingParams(temperature=0.6))
MindIE
# Deploy with MindIE
# See MindIE documentation for details
重みの変換
# Convert to AutoAWQ/AutoGPTQ format
python3 example/common/ms_to_vllm.py --input /path/to/quantized --output /path/to/converted

デプロイの詳細は、references/deployment.md を参照してください。


出力ファイル

量子化後、出力ディレクトリには次のファイルが含まれます。

output/
├── config.json                      # Original model config
├── generation_config.json           # Generation config
├── quant_model_description.json     # Quantization description
├── quant_model_weight_w8a8.safetensors  # Quantized weights
├── tokenizer_config.json            # Tokenizer config
├── tokenizer.json                   # Tokenizer vocabulary
└── vocab.json                       # Vocabulary (if applicable)

トラブルシューティング

よくある問題

Q: 量子化中にメモリ不足になりますか?

# Use layer-by-layer quantization (default in V1)
# Or use CPU quantization
msmodelslim quant --device cpu ...

Q: 量子化後に精度が低下しました。

  • より高精度な型を使用します(W4A8 ではなく W8A8)
  • ベストプラクティスの設定については、lab_practice/ を確認します
  • 外れ値抑制アルゴリズムを有効にします
  • references/precision-tuning.md を参照してください

Q: モデルの種類がサポートされていません。

Q: デバッグログを有効にするにはどうすればよいですか?

export MSMODELSLIM_LOG_LEVEL=DEBUG
msmodelslim quant ...

スクリプトとアセット

スクリプト
設定テンプレート(assets/)

公式リファレンス


関連スキル

コメント