แปลงโมเดล GenAI ของ PyTorch สำหรับการอนุมานในอุปกรณ์

LiteRT Torch Generative API เป็น ไลบรารีประสิทธิภาพสูงที่ออกแบบมาสำหรับการเขียนและแปลง โมเดล PyTorch ที่อิงตาม Transformer เป็นรูปแบบ LiteRT/LiteRT-LM ซึ่งช่วยให้นักพัฒนาแอปสามารถทำให้โมเดล Generative AI โดยเฉพาะอย่างยิ่งโมเดลภาษาขนาดใหญ่ (LLM) ใช้งานได้ในอุปกรณ์สำหรับการสร้างข้อความและรูปภาพได้อย่างง่ายดาย

Torch Generative API รองรับการแปลงโมเดลสำหรับ CPU, GPU และ NPU เมื่อใช้ Torch Generative API ร่วมกับ LiteRT-LM คุณจะสร้างแอปพลิเคชันที่ปรับเปลี่ยนตามอุปกรณ์และมุ่งเน้นความเป็นส่วนตัวซึ่งเรียกใช้โมเดล Generative AI ทั้งหมดในอุปกรณ์ได้

แปลงจากไลบรารี Hugging Face Transformer

ส่วนขยาย LiteRT Torch Hugging Face Export มี เส้นทางที่คล่องตัวในการแปลงโมเดล Generative AI จาก ไลบรารี Hugging Face Transformers เป็นรูปแบบ LiteRT-LM โดยตรง เมื่อเทียบกับ LiteRT Torch Generative API ที่มีองค์ประกอบที่ใช้สร้างสรรค์ PyTorch ให้คุณสร้างและปรับแต่งโมเดลที่กำหนดเอง เครื่องมือนี้จะจัดการ ความซับซ้อนของการดาวน์โหลดน้ำหนัก การแปลสถาปัตยกรรมโมเดล PyTorch และการใช้เทคนิคการเพิ่มประสิทธิภาพ เช่น การเพิ่มประสิทธิภาพกราฟ และการหาปริมาณในเวิร์กโฟลว์เดียว โดยจะแสดงไฟล์ .litertlm ซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับการอนุมานในอุปกรณ์บน CPU, GPU และ NPU โดยใช้ รันไทม์ LiteRT-LM

ข้อกำหนดเบื้องต้น

ตรวจสอบว่าคุณได้ตั้งค่าสิ่งต่อไปนี้ก่อนใช้ส่วนขยายการส่งออก

  • ติดตั้งแพ็กเกจ LiteRT Torch Python ส่วนขยาย Hugging Face Export สร้างขึ้นในแพ็กเกจ litert-torch โดยตรง
  • (ไม่บังคับ) หากต้องการคอมไพล์ NPU ให้ติดตั้งส่วนขยาย LiteRT NPU SDK โดยใช้ pip install ai-edge-litert[npu-sdk] ดูรายละเอียดเพิ่มเติมได้ที่ LiteRT NPU AOT Compilation Colab
  • ตั้งค่าสภาพแวดล้อม Hugging Face หากคุณต้องการโหลดจากฮับ Hugging Face โดยตรง เครื่องมือ export_hf ใช้กลไกการตรวจสอบสิทธิ์ Transformer มาตรฐาน เช่น HF_TOKEN หรือ CLI ดูตัวอย่างดังนี้

หากต้องการดาวน์โหลดโมเดลที่มีการควบคุมการเข้าถึง (เช่น Gemma หรือ Llama) คุณต้องตรวจสอบสิทธิ์กับ Hugging Face โดยใช้ CLI หรือตัวแปรสภาพแวดล้อม

# Set your Hugging Face token as an environment variable
export HF_TOKEN="your_hugging_face_token"

# Or use the Hugging Face CLI login
hf auth login

การใช้งานพื้นฐาน

คุณใช้ export_hf ได้โดยใช้บรรทัดคำสั่งหรือ Python API เครื่องมือจะ ดาวน์โหลดโมเดลจาก Hugging Face หรือโหลดโมเดลจากเส้นทางในเครื่องที่ระบุ ติดตามโมเดล ใช้การเพิ่มประสิทธิภาพเริ่มต้น และแปลงโมเดลเป็น ไฟล์ .litertlm ที่เข้ากันได้กับการอนุมาน CPU และ GPU โดยอัตโนมัติ

อินเทอร์เฟซบรรทัดคำสั่ง (CLI)

ใช้คำสั่ง litert-torch export_hf คุณต้องระบุรหัสโมเดล Hugging Face และไดเรกทอรีเอาต์พุตที่เลือก

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm

หากต้องการส่งออกโมเดลในเครื่องหรือโมเดลที่กำหนดเอง คุณยังส่งเส้นทางไปยังจุดตรวจสอบ safetensor ได้ด้วย

litert-torch export_hf \
  --model=/path/to/safetensor/dir \
  --output_dir=/my_custom_litertlm

Python API

หากต้องการผสานรวมกับสคริปต์หรือสมุดบันทึก Python ให้นำเข้าโมดูล export จาก litert_torch.generative.export_hf

from litert_torch.generative.export_hf import export

export.export(
    model='google/gemma-3-270m-it',
    output_dir='/tmp/gemma3-270m-it-litertlm',
)

การทำให้ใช้งานได้ในอุปกรณ์ด้วย LiteRT-LM

เมื่อส่งออกโมเดลเป็นไฟล์ .litertlm สำเร็จแล้ว คุณจะ ทำให้โมเดลใช้งานได้ในอุปกรณ์โดยตรงโดยใช้ LiteRT-LM เพื่อการดำเนินการประสิทธิภาพสูงทั้งใน CPU และ GPU ดูรายละเอียดเกี่ยวกับวิธีใช้ LiteRT-LM API หากต้องการเร่งความเร็ว NPU โปรดดูคู่มือการคอมไพล์ NPU AOT

สถาปัตยกรรมที่รองรับ

เครื่องมือ export_hf จะตรวจสอบสถาปัตยกรรมโมเดล Transformer ต่อไปนี้ คุณตรวจสอบได้โดยดูช่อง model_type ใน config.json

  • Gemma 3 (Gemma3ForCausalLM)
  • Gemma 3n (Gemma3nForCausalLM)
  • Gemma 4 (Gemma4ForCausalLM)
  • Llama (LlamaForCausalLM)
  • Mistral (MistralForCausalLM)
  • Qwen 2/2.5 (Qwen2ForCausalLM)
  • Qwen 3 (Qwen3ForCausalLM)
  • SmolLM 3 (SmolLM3ForCausalLM)

การตั้งค่าขั้นสูง

แม้ว่าคุณจะสำรวจตัวเลือกขั้นสูงที่มีอยู่ในแฟล็กส่วนขยายได้ แต่ตัวเลือกทั่วไปบางอย่างที่คุณลองใช้ได้มีดังนี้

โมเดลภาษาภาพ

สำหรับโมเดลที่รองรับ คุณสามารถตั้งค่า --task=image_text_to_text และ --export_vision_encoder เพื่อโหลดและส่งออกโมเดลตัวเข้ารหัสภาพ

สถาปัตยกรรมที่รองรับ

  • Gemma 3 (Gemma3ForConditionalGeneration)
  • Gemma 4 (Gemma4ForConditionalGeneration)

การกำหนดค่าการหาปริมาณ

โมเดล Generative AI มักจะมีขนาดใหญ่เกินกว่าจะทำงานได้อย่างมีประสิทธิภาพในอุปกรณ์ Edge หากไม่มีการเพิ่มประสิทธิภาพ โดยค่าเริ่มต้น export_hf จะใช้สูตรการหาปริมาณ dynamic_wi8_afp32 โดยใช้ AI Edge Quantizer ซึ่งจะหาปริมาณน้ำหนักเป็น INT8 ต่อช่องสัญญาณในขณะที่เก็บการเปิดใช้งานไว้ใน FP32

คุณลบล้างลักษณะการทำงานเริ่มต้นนี้ได้โดยใช้แฟล็ก --quantization_recipe (หรือพารามิเตอร์ quantization_recipe ใน Python) คุณสามารถระบุชื่อสูตรในตัวจาก AI Edge Quantizer หรือระบุเส้นทางไปยังสูตร JSON ที่กำหนดเองได้

ตัวอย่าง:

litert-torch export_hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-it-litertlm \
  --quantization_recipe=/path/to/my/quantization_recipe.json

การลบล้างเทมเพลต Jinja

เทมเพลต Jinja ที่มาพร้อมกับโมเดล Transformer อาจไม่เข้ากันกับ LiteRT-LM (เช่น โมเดล Gemma4) คุณสามารถตั้งค่าแฟล็ก use_jinja_template เป็น False หรือใช้ตัวเลือก jinja_chat_template_override เพื่อลบล้างเทมเพลตได้

ตัวอย่าง:

 litert-torch export_hf \
   --model=google/gemma-4-E2B-it \
  --output_dir=/tmp/gemma4_2b_litertlm \
  --externalize_embedder \
  --jinja_chat_template_override=litert-community/gemma-4-E2B-it-litert-lm

การคอมไพล์ NPU AOT

นอกเหนือจาก CPU และ GPU แล้ว คุณยังกำหนดเป้าหมายตัวเร่งความเร็ว NPU ที่รองรับได้ด้วยเมื่อส่งออกโมเดลโดยระบุตัวเลือกเฉพาะของ NPU

Google Tensor

ข้อกำหนดเบื้องต้น: ทำตาม Google Tensor SDK หน้า เพื่อตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

หากต้องการส่งออก LLM ที่กำหนดเป้าหมายเป็น Google Tensor TPU ให้ทำตามตัวอย่างสำหรับแฟล็กเพิ่มเติมที่จำเป็นสำหรับการคอมไพล์ TPU

ตัวอย่าง:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --prefill_lengths=128, \
  --cache_length=1280 \
  --quantization_recipe="weight_only_wi8_afp32"
  --aot_backend=GOOGLE \
  --aot_soc_model=Tensor_G5 \
  --aot_compilation_config_dict='{"google_tensor_enable_large_model_support": True}'

ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ คอมไพล์โมเดลด้วย Google Tensor SDK

รันไทม์ AI ของ Qualcomm

ข้อกำหนดเบื้องต้น: ทำตาม การผสานรวม LiteRT Qualcomm เพื่อดูวิธีการตั้งค่า SDK และอุปกรณ์ที่รองรับ

ตัวอย่าง:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --quantization_recipe='' \
  --aot_backend=qualcomm \
  --aot_soc_model=SM8750

MediaTek NeuroPilot

ข้อกำหนดเบื้องต้น: ทำตาม การผสานรวม LiteRT MediaTek เพื่อดูวิธีการตั้งค่า SDK และอุปกรณ์ที่รองรับ

ตัวอย่าง:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=mediatek \
  --aot_soc_model=MT8189

Intel OpenVINO

ข้อกำหนดเบื้องต้น: ทำตาม การผสานรวม LiteRT Intel OpenVINO เพื่อดูวิธีการตั้งค่า SDK และอุปกรณ์ที่รองรับ

ตัวอย่าง:

litert-torch export-hf \
  --model=google/gemma-3-270m-it \
  --output_dir=/tmp/gemma3-270m-google-tensor-g5 \
  --split_cache \
  --externalize_embedder \
  --aot_backend=intel_openvino \
  --aot_soc_model=PTL

เขียนใหม่และแปลงโดยใช้ LiteRT Torch Generative API

LiteRT Torch Generative API ยังมีองค์ประกอบที่ใช้สร้างสรรค์เพื่อสร้างและเพิ่มประสิทธิภาพโมเดล PyTorch ที่ปรับแต่งเอง ซึ่งรวมถึงแต่ไม่จำกัดเพียงเลเยอร์ Normalizer, การใส่ใจ และโมดูลพื้นฐานอื่นๆ หากส่วนขยาย LiteRT Torch Hugging Face Export ไม่ครอบคลุมโมเดลของคุณ คุณสามารถสร้างโมเดลของคุณเองให้เข้ากันได้กับ LiteRT และ LiteRT-LM

มีตัวอย่างโมเดล เช่น LLM, โมเดลการแพร่ และ โมเดล ASR คุณสามารถดูตัวอย่างเหล่านี้และทำให้โมเดลของคุณเองใช้งานได้

ดูข้อมูลเพิ่มเติมได้ที่ ที่เก็บ GitHub ของ Generative Torch API