본문으로 건너뛰기
cccskills
무료GitHub에 공개

awq-quantization

Quantização de pesos consciente da ativação para compressão de LLM de 4-bit com aceleração 3x e perda mínima de acurácia. Use ao implantar modelos grandes (7B-70B) em memória GPU limitada, quando precisa de inferência mais rápida que GPTQ com melhor preservação de acurácia, ou para modelos com instruções ajustadas e multimodais. Vencedor do Prêmio Melhor Artigo MLSys 2024.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Hugging Face
설치 방법 보기

포함된 파일(3)

  • SKILL.md8.6 KB
  • references/advanced-usage.md7.8 KB
  • references/troubleshooting.md7.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

AWQ (Activation-aware Weight Quantization)

Quantização de 4-bit que preserva pesos salientes com base em padrões de ativação, alcançando aceleração 3x com perda mínima de acurácia.

Quando usar AWQ

Use AWQ quando:

  • Precisar de quantização de 4-bit com <5% de perda de acurácia
  • Implantando modelos com instruções ajustadas ou chat (AWQ generaliza melhor)
  • Quiser aceleração de ~2,5-3x na inferência em relação a FP16
  • Usando vLLM para serving em produção
  • Tiver GPUs Ampere+ (A100, H100, RTX 40xx) para suporte a kernel Marlin

Use GPTQ em vez disso quando:

  • Precisar de compatibilidade máxima de ecossistema (mais ferramentas suportam GPTQ)
  • Trabalhando especificamente com backend ExLlamaV2
  • Tiver GPUs mais antigas sem suporte a Marlin

Use bitsandbytes em vez disso quando:

  • Precisar de zero overhead de calibração (quantizar na hora)
  • Quiser ajustar com QLoRA
  • Preferir integração mais simples

Início rápido

Instalação

# Padrão (kernels Triton)
pip install autoawq

# Com kernels CUDA otimizados + Flash Attention
pip install autoawq[kernels]

# Otimização Intel CPU/XPU
pip install autoawq[cpu]

Requisitos: Python 3.8+, CUDA 11.8+, Compute Capability 7.5+

Carregar modelo pré-quantizado

from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_name = "TheBloke/Mistral-7B-Instruct-v0.2-AWQ"

model = AutoAWQForCausalLM.from_quantized(
    model_name,
    fuse_layers=True  # Enable fused attention for speed
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Generate
inputs = tokenizer("Explain quantum computing", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Quantizar seu próprio modelo

from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_path = "mistralai/Mistral-7B-Instruct-v0.2"

# Load model and tokenizer
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)

# Quantization config
quant_config = {
    "zero_point": True,      # Use zero-point quantization
    "q_group_size": 128,     # Group size (128 recommended)
    "w_bit": 4,              # 4-bit weights
    "version": "GEMM"        # GEMM for batch, GEMV for single-token
}

# Quantize (uses pileval dataset by default)
model.quantize(tokenizer, quant_config=quant_config)

# Save
model.save_quantized("mistral-7b-awq")
tokenizer.save_pretrained("mistral-7b-awq")

Tempo: ~10-15 min para modelos 7B, ~1 hora para modelos 70B.

AWQ vs GPTQ vs bitsandbytes

RecursoAWQGPTQbitsandbytes
Aceleração (4-bit)~2,5-3x~2x~1,5x
Perda de acurácia<5%~5-10%~5-15%
CalibraçãoMínima (128-1K tokens)Mais extensaNenhuma
Risco de overfittingBaixoMais altoN/A
Melhor paraInferência em produçãoInferência GPUIntegração fácil
Suporte vLLMNativoSimLimitado

Insight principal: AWQ assume que nem todos os pesos são igualmente importantes. Ele protege ~1% de pesos salientes identificados por padrões de ativação, reduzindo erro de quantização sem overhead de precisão mista.

Backends de kernel

GEMM (padrão, inferência em lote)

quant_config = {
    "zero_point": True,
    "q_group_size": 128,
    "w_bit": 4,
    "version": "GEMM"  # Best for batch sizes > 1
}

GEMV (geração de token único)

quant_config = {
    "version": "GEMV"  # 20% faster for batch_size=1
}

Limitação: Apenas tamanho de lote 1, não é bom para contexto grande.

Marlin (GPUs Ampere+)

from transformers import AwqConfig, AutoModelForCausalLM

config = AwqConfig(
    bits=4,
    version="marlin"  # 2x faster on A100/H100
)

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Mistral-7B-AWQ",
    quantization_config=config
)

Requisitos: Compute Capability 8.0+ (A100, H100, RTX 40xx)

ExLlamaV2 (compatível com AMD)

config = AwqConfig(
    bits=4,
    version="exllama"  # Faster prefill, AMD GPU support
)

Integração HuggingFace Transformers

Carregamento direto

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/zephyr-7B-alpha-AWQ",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("TheBloke/zephyr-7B-alpha-AWQ")

Módulos fundidos (recomendado)

from transformers import AwqConfig, AutoModelForCausalLM

config = AwqConfig(
    bits=4,
    fuse_max_seq_len=512,  # Max sequence length for fusing
    do_fuse=True           # Enable fused attention/MLP
)

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Mistral-7B-OpenOrca-AWQ",
    quantization_config=config
)

Nota: Módulos fundidos não podem ser combinados com FlashAttention2.

Integração vLLM

from vllm import LLM, SamplingParams

# vLLM auto-detects AWQ models
llm = LLM(
    model="TheBloke/Llama-2-7B-AWQ",
    quantization="awq",
    dtype="half"
)

sampling = SamplingParams(temperature=0.7, max_tokens=200)
outputs = llm.generate(["Explain AI"], sampling)

Benchmarks de desempenho

Redução de memória

ModeloFP16AWQ 4-bitRedução
Mistral 7B14 GB5,5 GB2,5x
Llama 2-13B26 GB10 GB2,6x
Llama 2-70B140 GB35 GB4x

Velocidade de inferência (RTX 4090)

ModeloPrefill (tok/s)Decode (tok/s)Memória
Mistral 7B GEMM3.8971145,55 GB
TinyLlama 1B GEMV5.1794312,10 GB
Llama 2-13B GEMM2.2797410,28 GB

Acurácia (perplexity)

ModeloFP16AWQ 4-bitDegradação
Llama 3 8B8,208,48+3,4%
Mistral 7B5,255,42+3,2%
Qwen2 72B4,854,95+2,1%

Calibração personalizada

# Use custom dataset for domain-specific models
model.quantize(
    tokenizer,
    quant_config=quant_config,
    calib_data="wikitext",       # Or custom list of strings
    max_calib_samples=256,       # More samples = better accuracy
    max_calib_seq_len=512        # Sequence length
)

# Or provide your own samples
calib_samples = [
    "Your domain-specific text here...",
    "More examples from your use case...",
]
model.quantize(tokenizer, quant_config=quant_config, calib_data=calib_samples)

Implantação multi-GPU

model = AutoAWQForCausalLM.from_quantized(
    "TheBloke/Llama-2-70B-AWQ",
    device_map="auto",  # Auto-split across GPUs
    max_memory={0: "40GB", 1: "40GB"}
)

Modelos suportados

35+ arquiteturas incluindo:

  • Família Llama: Llama 2/3, Code Llama, Mistral, Mixtral
  • Qwen: Qwen, Qwen2, Qwen2.5-VL
  • Outros: Falcon, MPT, Phi, Yi, DeepSeek, Gemma
  • Multimodal: LLaVA, LLaVA-Next, Qwen2-VL

Problemas comuns

CUDA OOM durante quantização:

# Reduce batch size
model.quantize(tokenizer, quant_config=quant_config, max_calib_samples=64)

Inferência lenta:

# Enable fused layers
model = AutoAWQForCausalLM.from_quantized(model_name, fuse_layers=True)

Suporte GPU AMD:

# Use ExLlama backend
config = AwqConfig(bits=4, version="exllama")

Aviso de descontinuação

AutoAWQ está oficialmente descontinuado. Para novos projetos, considere:

Modelos quantizados existentes continuam utilizáveis.

Referências

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

artubss의 스킬 모두 보기

이 스킬의 문제 신고