Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

gptq

大規模言語モデルに対してポスト学習4ビット量子化を行い、精度劣化を最小限に抑えるスキル。70Bや405Bといった大規模モデルをコンシューマー向けGPUで動作させたい場合、メモリ使用量を4分の1に削減しつつパープレキシティの劣化を2%未満に抑えたい場合、またはFP16比で3〜4倍の推論高速化が必要な場合に活用できる。transformersおよびPEFTと統合されており、QLoRAファインチューニングにも対応。

description の原文を見る

Post-training 4-bit quantization for LLMs with minimal accuracy loss. Use for deploying large models (70B, 405B) on consumer GPUs, when you need 4× memory reduction with <2% perplexity degradation, or for faster inference (3-4× speedup) vs FP16. Integrates with transformers and PEFT for QLoRA fine-tuning.

SKILL.md 本文

GPTQ (Generative Pre-trained Transformer Quantization)

グループ単位の量子化を使用して、最小限の精度低下でLLMを4ビットに圧縮するポストトレーニング量子化手法です。

GPTQ を使用する場合

GPTQ を使用する場合:

  • 大規模モデル(70B以上)を限られたGPUメモリに収める必要がある
  • 4倍のメモリ削減と2%未満の精度損失が必要
  • 消費者向けGPU(RTX 4090、3090)にデプロイする
  • FP16比で3~4倍高速な推論が必要

代わりに AWQ を使用する場合:

  • より優れた精度(1%未満の損失)が必要
  • より新しいGPU(Ampere、Ada)を使用している
  • Marlin カーネルのサポートが必要(一部のGPUで2倍高速)

代わりに bitsandbytes を使用する場合:

  • transformersとの簡単な統合が必要
  • 8ビット量子化を希望している(圧縮が少なく、品質が高い)
  • 事前量子化モデルファイルが不要

クイックスタート

インストール

# AutoGPTQ をインストール
pip install auto-gptq

# Triton 付き(Linux のみ、高速)
pip install auto-gptq[triton]

# CUDA 拡張機能付き(高速)
pip install auto-gptq --no-build-isolation

# 完全インストール
pip install auto-gptq transformers accelerate

事前量子化モデルの読み込み

from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM

# HuggingFace から量子化モデルを読み込む
model_name = "TheBloke/Llama-2-7B-Chat-GPTQ"

model = AutoGPTQForCausalLM.from_quantized(
    model_name,
    device="cuda:0",
    use_triton=False  # Linux では True に設定して高速化
)

tokenizer = AutoTokenizer.from_pretrained(model_name)

# 生成
prompt = "Explain quantum computing"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0]))

独自のモデルを量子化

from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from datasets import load_dataset

# モデルを読み込む
model_name = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 量子化設定
quantize_config = BaseQuantizeConfig(
    bits=4,              # 4ビット量子化
    group_size=128,      # グループサイズ(推奨: 128)
    desc_act=False,      # アクティベーション順序(CUDA カーネル用は False)
    damp_percent=0.01    # ダンピング係数
)

# 量子化用モデルを読み込む
model = AutoGPTQForCausalLM.from_pretrained(
    model_name,
    quantize_config=quantize_config
)

# キャリブレーションデータを準備
dataset = load_dataset("c4", split="train", streaming=True)
calibration_data = [
    tokenizer(example["text"])["input_ids"][:512]
    for example in dataset.take(128)
]

# 量子化
model.quantize(calibration_data)

# 量子化モデルを保存
model.save_quantized("llama-2-7b-gptq")
tokenizer.save_pretrained("llama-2-7b-gptq")

# HuggingFace にプッシュ
model.push_to_hub("username/llama-2-7b-gptq")

グループ単位の量子化

GPTQ の動作方法

  1. 重みをグループ化: 各重み行列を(通常128要素の)グループに分割
  2. グループごとに量子化: 各グループは独自のスケール/ゼロポイントを持つ
  3. エラーを最小化: Hessian 情報を使用して量子化エラーを最小化
  4. 結果: FP16に近い精度を持つ4ビット重み

グループサイズの トレードオフ

グループサイズモデルサイズ精度速度推奨
-1 (列単位)最小最高最遅研究のみ
32より小さいより高いより遅い高精度が必要
128中程度良好高速推奨デフォルト
256より大きいより低いより高速速度が重要
1024最大最低最速非推奨

重み行列: [1024, 4096] = 420万要素

グループサイズ = 128:
- グループ数: 420万 / 128 = 32,768グループ
- 各グループ: 独自の4ビットスケール + ゼロポイント
- 結果: より細かい粒度 → より高い精度

量子化設定

標準的な4ビット(推奨)

from auto_gptq import BaseQuantizeConfig

config = BaseQuantizeConfig(
    bits=4,              # 4ビット量子化
    group_size=128,      # 標準グループサイズ
    desc_act=False,      # より高速な CUDA カーネル
    damp_percent=0.01    # ダンピング係数
)

パフォーマンス

  • メモリ: 4倍削減(70B モデル: 140GB → 35GB)
  • 精度: パープレキシティ約1.5%増加
  • 速度: FP16 比3~4倍高速

高精度(3ビット、より大きなグループ)

config = BaseQuantizeConfig(
    bits=3,              # 3ビット(より高い圧縮)
    group_size=128,      # 標準グループサイズを維持
    desc_act=True,       # より高い精度(低速)
    damp_percent=0.01
)

トレードオフ

  • メモリ: 5倍削減
  • 精度: パープレキシティ約3%増加
  • 速度: 5倍高速(ただし精度は低い)

最大精度(4ビット、小さなグループ)

config = BaseQuantizeConfig(
    bits=4,
    group_size=32,       # より小さいグループ(より高い精度)
    desc_act=True,       # アクティベーション並べ替え
    damp_percent=0.005   # より低いダンピング
)

トレードオフ

  • メモリ: 3.5倍削減(やや大きい)
  • 精度: パープレキシティ約0.8%増加(最高)
  • 速度: 2~3倍高速(カーネルオーバーヘッド)

カーネルバックエンド

ExLlamaV2(デフォルト、最速)

model = AutoGPTQForCausalLM.from_quantized(
    model_name,
    device="cuda:0",
    use_exllama=True,      # ExLlamaV2 を使用
    exllama_config={"version": 2}
)

パフォーマンス: Triton 比1.5~2倍高速

Marlin(Ampere+ GPU)

# Marlin フォーマットで量子化
config = BaseQuantizeConfig(
    bits=4,
    group_size=128,
    desc_act=False  # Marlin に必須
)

model.quantize(calibration_data, use_marlin=True)

# Marlin で読み込む
model = AutoGPTQForCausalLM.from_quantized(
    model_name,
    device="cuda:0",
    use_marlin=True  # A100/H100 で2倍高速
)

要件

  • NVIDIA Ampere 以上(A100、H100、RTX 40xx)
  • コンピュート機能 ≥ 8.0

Triton(Linux のみ)

model = AutoGPTQForCausalLM.from_quantized(
    model_name,
    device="cuda:0",
    use_triton=True  # Linux のみ
)

パフォーマンス: CUDA バックエンド比1.2~1.5倍高速

transformers との統合

transformers の直接使用

from transformers import AutoModelForCausalLM, AutoTokenizer

# 量子化モデルを読み込む(transformers が GPTQ を自動検出)
model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Llama-2-13B-Chat-GPTQ",
    device_map="auto",
    trust_remote_code=False
)

tokenizer = AutoTokenizer.from_pretrained("TheBloke/Llama-2-13B-Chat-GPTQ")

# 任意の transformers モデルのように使用
inputs = tokenizer("Hello", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)

QLoRA 微調整(GPTQ + LoRA)

from transformers import AutoModelForCausalLM
from peft import prepare_model_for_kbit_training, LoraConfig, get_peft_model

# GPTQ モデルを読み込む
model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Llama-2-7B-GPTQ",
    device_map="auto"
)

# LoRA トレーニング用に準備
model = prepare_model_for_kbit_training(model)

# LoRA 設定
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

# LoRA アダプタを追加
model = get_peft_model(model, lora_config)

# 微調整(メモリ効率的!)
# 70B モデルは単一の A100 80GB でトレーニング可能

パフォーマンスベンチマーク

メモリ削減

モデルFP16GPTQ 4ビット削減率
Llama 2-7B14 GB3.5 GB4倍
Llama 2-13B26 GB6.5 GB4倍
Llama 2-70B140 GB35 GB4倍
Llama 3-405B810 GB203 GB4倍

実現できる場合

  • 70B を単一 A100 80GB で実行(FP16 では 2倍 A100 が必要)
  • 405B を 3倍 A100 80GB で実行(FP16 では 11倍 A100 が必要)
  • 13B を RTX 4090 24GB で実行(FP16 では OOM)

推論速度(Llama 2-7B、A100)

精度トークン/秒FP16 比
FP1625 トークン/秒1倍
GPTQ 4ビット(CUDA)85 トークン/秒3.4倍
GPTQ 4ビット(ExLlama)105 トークン/秒4.2倍
GPTQ 4ビット(Marlin)120 トークン/秒4.8倍

精度(WikiText-2 のパープレキシティ)

モデルFP16GPTQ 4ビット(g=128)低下
Llama 2-7B5.475.55+1.5%
Llama 2-13B4.884.95+1.4%
Llama 2-70B3.323.38+1.8%

優れた品質維持 - 2%未満の低下です!

一般的なパターン

マルチGPUデプロイメント

# 自動デバイスマッピング
model = AutoGPTQForCausalLM.from_quantized(
    "TheBloke/Llama-2-70B-GPTQ",
    device_map="auto",  # GPU 全体に自動的に分割
    max_memory={0: "40GB", 1: "40GB"}  # GPU ごとの制限
)

# 手動デバイスマッピング
device_map = {
    "model.embed_tokens": 0,
    "model.layers.0-39": 0,  # 最初の 40 層は GPU 0
    "model.layers.40-79": 1,  # 最後の 40 層は GPU 1
    "model.norm": 1,
    "lm_head": 1
}

model = AutoGPTQForCausalLM.from_quantized(
    model_name,
    device_map=device_map
)

CPU オフロード

# いくつかの層を CPU にオフロード(非常に大規模なモデル用)
model = AutoGPTQForCausalLM.from_quantized(
    "TheBloke/Llama-2-405B-GPTQ",
    device_map="auto",
    max_memory={
        0: "80GB",  # GPU 0
        1: "80GB",  # GPU 1
        2: "80GB",  # GPU 2
        "cpu": "200GB"  # オーバーフロー時に CPU にオフロード
    }
)

バッチ推論

# 複数のプロンプトを効率的に処理
prompts = [
    "Explain AI",
    "Explain ML",
    "Explain DL"
]

inputs = tokenizer(prompts, return_tensors="pt", padding=True).to("cuda")

outputs = model.generate(
    **inputs,
    max_new_tokens=100,
    pad_token_id=tokenizer.eos_token_id
)

for i, output in enumerate(outputs):
    print(f"Prompt {i}: {tokenizer.decode(output)}")

事前量子化モデルの検索

HuggingFace の TheBloke

  • https://huggingface.co/TheBloke
  • 1000以上の GPTQ フォーマットモデル
  • 複数のグループサイズ(32、128)
  • CUDA および Marlin フォーマット両方

検索

# HuggingFace で GPTQ モデルを検索
https://huggingface.co/models?library=gptq

ダウンロード

from auto_gptq import AutoGPTQForCausalLM

# HuggingFace から自動的にダウンロード
model = AutoGPTQForCausalLM.from_quantized(
    "TheBloke/Llama-2-70B-Chat-GPTQ",
    device="cuda:0"
)

サポートされているモデル

  • LLaMA ファミリー: Llama 2、Llama 3、Code Llama
  • Mistral: Mistral 7B、Mixtral 8x7B、8x22B
  • Qwen: Qwen、Qwen2、QwQ
  • DeepSeek: V2、V3
  • Phi: Phi-2、Phi-3
  • Yi、Falcon、BLOOM、OPT
  • HuggingFace 上の 100以上のモデル

リファレンス

  • キャリブレーションガイド - データセット選択、量子化プロセス、品質最適化
  • 統合ガイド - Transformers、PEFT、vLLM、TensorRT-LLM
  • トラブルシューティング - 一般的な問題、パフォーマンス最適化

リソース

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT