CoolFace
Modelpublic

macunaima/Qwen3-0.6B-SM8650-LiteRT-LM-AOT-Dynamic-INT8-Full

sourceHugging Faceapache-2.0updated 11d agoView on Hugging Face
0likes11downloads
Model Card

Qwen3-0.6B — SM8650 LiteRT-LM (AOT, dynamic INT8, full model)

Qwen/Qwen3-0.6B exportado e compilado AOT (ahead-of-time) para o SoC Qualcomm SM8650 (Snapdragon 8 Gen 3), empacotado como bundle .litertlm para o runtime LiteRT-LM.

Este é o build mais simples possível: modelo completo, uma única chamada de CLI, sem nenhuma flag de particionamento de grafo (--split_cache, --externalize_embedder, prefill/cache customizados não foram usados).

Quantização: `dynamic_wi8_afp32` — pesos INT8 dinâmicos, ativações FP32. Nenhuma flag -q foi passada na CLI, mas essa é a receita default do export-hf nesta versão do litert-torch: o build.log (no repo) linha 52 mostra quantization_recipe : 'dynamic_wi8_afp32', e a quantização rodou de fato — grafo principal 2.22 GiB → 581.41 MiB e embedder 593.50 MiB → 151.86 MiB (3.9x cada). Este não é um build float, apesar de "simples": quem quiser o baseline em precisão cheia precisa desligar a receita default explicitamente (não testado aqui).

Arquivo

Bundleqwen3-0.6B-sm8650-aot-dynamic-int8.litertlm
Tamanho819.812.816 bytes (782 MiB)
SHA-25630aee1147ea6fc8bfed001a7dbb66e491c55a57b47c8faf87f6dd58f8c2cab3d
BaseQwen/Qwen3-0.6B, revisão c1899de289a04d12100db370d81485cdf75e47ca
Backend AOTqualcomm / SoC SM8650
Quantizaçãodynamic_wi8_afp32 (INT8 dinâmico nos pesos, default do exportador)

O .sha256.json no repo carrega a mesma procedência em forma legível por máquina.

Como foi gerado

bash
uv venv --python 3.12 .venv && source .venv/bin/activate
uv pip install litert-torch ai-edge-litert ai-edge-litert-sdk-qualcomm

litert-torch export-hf Qwen/Qwen3-0.6B ./out \
  --aot_backend=qualcomm \
  --aot_soc_model=SM8650 \
  --bundle_litert_lm=True

Uma chamada faz tudo: baixa o checkpoint do Hub, converte para LiteRT, chama o compilador AOT da Qualcomm (QNN/HTP) e empacota o .litertlm (prefill/decode + embedder + auxiliary + tokenizer + metadata).

Toolchain: litert-torch 0.9.4, ai-edge-litert 2.2.0, ai-edge-litert-sdk-qualcomm 2.2.0, ai-edge-quantizer 0.9.0, torch 2.13.0, transformers 5.17.0, Python 3.12 (Linux x86_64 — o compilador AOT da Qualcomm não tem build para macOS/arm64).

Note que a ausência de -q na linha de comando não significa float: o default aplicado foi dynamic_wi8_afp32.

Tempo total: 3m02s em 16 cores de CPU, dos quais 1m49s no estágio AOT Compilation → apply_plugin. Script completo (build.sh) e log integral (build.log) estão no repo.

Uso

bash
adb push qwen3-0.6B-sm8650-aot-dynamic-int8.litertlm /data/local/tmp/
adb shell /data/local/tmp/litert_lm_main \
  --model_path=/data/local/tmp/qwen3-0.6B-sm8650-aot-dynamic-int8.litertlm \
  --backend=npu \
  --input_prompt="Explique o que é um transformador de distribuição."

Binários litert_lm_main e instruções de build do runtime: veja o repositório LiteRT-LM.

Verificações e limitações

  • —Estágio AOT confirmado no log: Compiling Qualcomm_SM8650: apply_plugin 100%.
  • —Quantização confirmada no log: receita dynamic_wi8_afp32, com 3.9x de redução tanto no grafo principal quanto no embedder.
  • —Container inspecionado: magic LITERTLM, 3 subgrafos TFL3 (model / embedder / auxiliary), com bytecode HTP para SM8650 embutido.
  • —Não validado em device. Compilar para o SoC não garante compatibilidade com toda firmware/versão de runtime desse SoC — valide com litert_lm_main via adb no aparelho alvo antes de usar.
  • —Sem benchmark e sem avaliação de qualidade. Nenhuma medida de tokens/s, latência de prefill, uso de memória ou perplexidade foi feita.
  • —O caminho de compilação AOT usado aqui é o legado (compila cada submodelo antes do empacotamento); o log emite deprecation warning apontando para --use_litert_lm_compiler=True.

Variantes relacionadas

O repo -Dynamic-INT8 acima é um build anterior; não verifiquei quais flags de export foram usadas nele, então não afirmo aqui como os dois se comparam além do que está documentado neste card (grafo completo, sem flags de particionamento).

Licença

Pesos derivados de Qwen/Qwen3-0.6B — Apache 2.0, a mesma do modelo base.