LiteRT-LM เป็นไลบรารีข้ามแพลตฟอร์มที่ออกแบบมาเพื่อเรียกใช้ไปป์ไลน์โมเดลภาษาอย่างมีประสิทธิภาพในอุปกรณ์หลากหลายประเภท ตั้งแต่โทรศัพท์มือถือไปจนถึงระบบแบบฝัง โดยจะมอบเครื่องมือให้นักพัฒนาซอฟต์แวร์สร้างและติดตั้งใช้งาน เวิร์กโฟลว์โมเดลภาษาที่ซับซ้อน ซึ่งตอนนี้ผสานรวม NPU ได้อย่างราบรื่นแล้ว
เรียกใช้ LLM บน CPU และ GPU
ดูวิธีการโดยละเอียดเกี่ยวกับการพัฒนาข้ามแพลตฟอร์มและการเร่งความเร็วฮาร์ดแวร์ CPU/GPU ได้ที่ที่เก็บ LiteRT-LM ใน GitHub
เรียกใช้ LLM บน NPU
Neural Processing Unit (NPU) มีบล็อกฮาร์ดแวร์เฉพาะที่ได้รับการเพิ่มประสิทธิภาพสำหรับ ภาระงานการเรียนรู้เชิงลึก ปัจจุบันระบบที่ทันสมัยมีชิป (SoC) ที่มีหน่วยประมวลผลกราฟิกมากขึ้น โดยเฉพาะในอุปกรณ์เคลื่อนที่ ประสิทธิภาพสูงทำให้ เหมาะอย่างยิ่งสำหรับการอนุมาน LLM
ผู้ให้บริการ NPU
LiteRT-LM รองรับการเรียกใช้ LLM โดยใช้การเร่งความเร็ว NPU กับผู้ให้บริการต่อไปนี้ เลือกวิธีการตามผู้ให้บริการที่คุณต้องการ ลองใช้
คู่มือเริ่มต้นฉบับย่อ
หากต้องการเริ่มต้นใช้งาน ให้ทำตามวิธีการในข้อกำหนดเบื้องต้น ก่อนเพื่อตั้งค่าสภาพแวดล้อมและที่เก็บ
นอกจากนี้ หากต้องการโต้ตอบกับอุปกรณ์ Android ให้ตรวจสอบว่าคุณได้ติดตั้ง Android Debug Bridge อย่างถูกต้องแล้ว และมีอุปกรณ์ที่เชื่อมต่อซึ่งเข้าถึงได้โดยใช้ adb
ดูวิธีการโดยละเอียดเพิ่มเติมได้ที่ส่วนเริ่มต้นใช้งานฉบับย่อในที่เก็บ LiteRT-LM
และดูข้อมูลเพิ่มเติมเกี่ยวกับlitert_lm_main
การสาธิตบรรทัดคำสั่ง
Qualcomm AI Engine Direct
ขั้นตอนการเรียกใช้ LLM บน NPU ของ Qualcomm มีดังนี้
ขั้นตอนที่ 1: ดาวน์โหลดโมเดล .litertlm
รันไทม์ LiteRT-LM ออกแบบมาให้ทำงานกับโมเดลในรูปแบบ .litertlm
คุณค้นหาและดาวน์โหลดโมเดลที่เข้ากันได้ในตารางต่อไปนี้
| รุ่น | SoC | การทำให้เล็กลง | ขนาดบริบท | ขนาดโมเดล (Mb) | ลิงก์ดาวน์โหลด |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 บิตต่อช่อง | 1280 | 658 | download |
| Gemma3-1B | SM8650 | 4 บิตต่อช่อง | 1280 | 658 | download |
| Gemma3-1B | SM8550 | 4 บิตต่อช่อง | 1280 | 657 | download |
คุณจะต้องดาวน์โหลดโมเดลที่สอดคล้องกับ SoC
ต่อไปนี้คือตัวอย่างคำสั่งที่จะช่วยให้คุณได้รับลิงก์ Hugging Face ซึ่ง
สามารถดาวน์โหลดโมเดลที่ถูกต้องสำหรับ SoC ของโทรศัพท์ (โปรดทราบว่าคุณจะต้อง
เข้าสู่ระบบและรับทราบแบบฟอร์มเพื่อให้มีสิทธิ์ดาวน์โหลด
ไฟล์) คุณควรตรวจสอบว่ามีอุปกรณ์ที่เชื่อมต่ออยู่ซึ่งเข้าถึงได้โดยใช้ adb
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
ตรวจสอบว่า $SOC_MODEL แสดงอยู่ในตารางการสนับสนุน ลิงก์ที่สร้างขึ้นจะใช้ไม่ได้กับรุ่นที่ไม่รองรับ เรากำลังเพิ่มการรองรับ NPU ใหม่ๆ อย่างสม่ำเสมอ โปรดกลับมาตรวจสอบอีกครั้งในภายหลังเพื่อดูว่าอุปกรณ์ของคุณรองรับหรือไม่
ขั้นตอนที่ 2: ดาวน์โหลดและแตกไฟล์ไลบรารี QAIRT
หากต้องการเรียกใช้โมเดลโดยใช้ NPU ของ Qualcomm คุณจะต้องมีไลบรารีรันไทม์ที่เกี่ยวข้อง ในอุปกรณ์ คุณสามารถดาวน์โหลด QAIRT SDK ได้จากลิงก์และแตกไฟล์ ตั้งค่าตัวแปรQAIRT_ROOT (จะใช้ในขั้นตอนต่อๆ ไป) เพื่อชี้ไปยังโฟลเดอร์ที่คลายซิปแล้วซึ่งมีหมายเลขเวอร์ชัน เช่น
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
ขั้นตอนที่ 3: สร้างรันไทม์ / ไลบรารี LiteRT-LM
พัฒนาใน Linux
หากต้องการสร้างไบนารีสำหรับ Android คุณต้องติดตั้ง NDK r28b หรือ ใหม่กว่าจาก https://developer.android.com/ndk/downloads#stable-downloads ขั้นตอนที่เฉพาะเจาะจงมีดังนี้
- ดาวน์โหลดไฟล์
zipจาก https://developer.android.com/ndk/downloads#stable-downloads - แตกไฟล์
zipไปยังตำแหน่งที่ต้องการ (เช่น/path/to/AndroidNDK/) - สร้าง
ANDROID_NDK_HOMEเพื่อชี้ไปยังไดเรกทอรี NDK โดยควรมีลักษณะดังนี้
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
เคล็ดลับ: ตรวจสอบว่า ANDROID_NDK_HOME ชี้ไปยังไดเรกทอรีที่มี
README.md อยู่
เมื่อตั้งค่าแล้ว ให้ลองสร้างไบนารี litert_lm_main ดังนี้
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
นอกจากนี้ เราควรสร้างไลบรารี Dispatch API เพื่อให้รันไทม์ LiteRT-LM โต้ตอบกับ NPU ได้ ดังนี้
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
พัฒนาใน macOS
เครื่องมือบรรทัดคำสั่ง Xcode มี clang เรียกใช้ xcode-select --install หากยังไม่ได้ติดตั้ง
หากต้องการสร้างไบนารีสำหรับ Android คุณต้องติดตั้ง NDK r28b หรือ ใหม่กว่าจาก https://developer.android.com/ndk/downloads#stable-downloads ขั้นตอนที่เฉพาะเจาะจงมีดังนี้
- ดาวน์โหลดไฟล์
.dmgจาก https://developer.android.com/ndk/downloads#stable-downloads - เปิดไฟล์
.dmgแล้วย้ายไฟล์AndroidNDK*ไปยังตำแหน่งที่ต้องการ (เช่น/path/to/AndroidNDK/) - สร้าง
ANDROID_NDK_HOMEเพื่อชี้ไปยังไดเรกทอรี NDK โดยควรมีลักษณะดังนี้
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
เคล็ดลับ: ตรวจสอบว่า ANDROID_NDK_HOME ชี้ไปยังไดเรกทอรีที่มี
README.md อยู่
เมื่อตั้งค่าแล้ว ให้ลองสร้างไบนารี litert_lm_main ดังนี้
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
นอกจากนี้ เราควรสร้างไลบรารี Dispatch API เพื่อให้รันไทม์ LiteRT-LM โต้ตอบกับ NPU ได้ ดังนี้
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
ขั้นตอนที่ 4: เรียกใช้โมเดลในอุปกรณ์
หลังจากสร้างไบนารีเรียบร้อยแล้ว ตอนนี้เราสามารถลองเรียกใช้โมเดลใน อุปกรณ์ได้ ตรวจสอบว่าคุณมีสิทธิ์เขียนในDEVICE_FOLDER
หากต้องการเรียกใช้ไบนารีในอุปกรณ์ Android เราต้องพุชชิ้นงาน
/ไบนารีบางรายการ ก่อนอื่น ให้ตั้งค่า DEVICE_FOLDER และตรวจสอบว่าคุณมีสิทธิ์การเขียน
ในนั้น (โดยปกติคุณจะวางสิ่งต่างๆ ไว้ใน /data/local/tmp/ ได้)
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
ส่งไฟล์ .litertlm เคล็ดลับ: คุณต้องพุชชิ้นงานเหล่านั้นเพียงครั้งเดียว
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
เผยแพร่ไลบรารี QAIRT โดยคุณจะเห็นไฟล์เหล่านี้ในโฟลเดอร์ที่ไม่ได้ซิปในขั้นตอนที่ 2 $QAIRT_ROOT/lib/aarch64-android/ โปรดทราบว่า QAIRT_ROOT ควร
มีหมายเลขเวอร์ชัน เช่น 2.42.0.251225
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp*Stub.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnSystem.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtpPrepare.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/hexagon-*/unsigned/libQnnHtp*Skel.so $DEVICE_FOLDER
พุช API การเรียกใช้และไบนารีหลักที่คอมไพล์ในขั้นตอนที่ 3
adb push bazel-bin/external/litert/litert/vendors/qualcomm/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
ตอนนี้คุณสามารถเรียกใช้ไบนารีได้แล้ว
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER ADSP_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm
MediaTek NeuroPilot
ขั้นตอนการเรียกใช้ LLM ใน NPU ของ MediaTek มีดังนี้
ขั้นตอนที่ 1: ดาวน์โหลดโมเดล .litertlm
รันไทม์ LiteRT-LM ออกแบบมาให้ทำงานกับโมเดลในรูปแบบ .litertlm
คุณค้นหาและดาวน์โหลดโมเดลที่เข้ากันได้ในตารางต่อไปนี้
| รุ่น | SoC | การทำให้เล็กลง | ขนาดบริบท | ขนาดโมเดล (Mb) | ลิงก์ดาวน์โหลด |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 บิตต่อช่อง | 1280 | 985 | download |
| Gemma3-1B | MT6991 | 4 บิตต่อช่อง | 1280 | 986 | download |
คุณจะต้องดาวน์โหลดโมเดลที่สอดคล้องกับ SoC
ต่อไปนี้คือตัวอย่างคำสั่งที่จะช่วยให้คุณได้รับลิงก์ Hugging Face ซึ่ง
สามารถดาวน์โหลดโมเดลที่ถูกต้องสำหรับ SoC ของโทรศัพท์ (โปรดทราบว่าคุณจะต้อง
เข้าสู่ระบบและรับทราบแบบฟอร์มเพื่อให้มีสิทธิ์ดาวน์โหลด
ไฟล์) คุณควรตรวจสอบว่ามีอุปกรณ์ที่เชื่อมต่ออยู่ซึ่งเข้าถึงได้โดยใช้ adb
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
ตรวจสอบว่า $SOC_MODEL แสดงอยู่ในตารางการสนับสนุน ลิงก์ที่สร้างขึ้นจะใช้ไม่ได้กับรุ่นที่ไม่รองรับ เรากำลังเพิ่มการรองรับ NPU ใหม่ๆ อย่างสม่ำเสมอ โปรดกลับมาตรวจสอบอีกครั้งในภายหลังเพื่อดูว่าอุปกรณ์ของคุณรองรับหรือไม่
ขั้นตอนที่ 2: สร้างรันไทม์ / ไลบรารี LiteRT-LM
พัฒนาใน Linux
หากต้องการสร้างไบนารีสำหรับ Android คุณต้องติดตั้ง NDK r28b หรือ ใหม่กว่าจาก https://developer.android.com/ndk/downloads#stable-downloads ขั้นตอนที่เฉพาะเจาะจงมีดังนี้
- ดาวน์โหลดไฟล์
zipจาก https://developer.android.com/ndk/downloads#stable-downloads - แตกไฟล์
zipไปยังตำแหน่งที่ต้องการ (เช่น/path/to/AndroidNDK/) - สร้าง
ANDROID_NDK_HOMEเพื่อชี้ไปยังไดเรกทอรี NDK โดยควรมีลักษณะดังนี้
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
เคล็ดลับ: ตรวจสอบว่า ANDROID_NDK_HOME ชี้ไปยังไดเรกทอรีที่มี
README.md อยู่
เมื่อตั้งค่าแล้ว ให้ลองสร้างไบนารี litert_lm_main ดังนี้
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
นอกจากนี้ เราควรสร้างไลบรารี Dispatch API เพื่อให้รันไทม์ LiteRT-LM โต้ตอบกับ NPU ได้ ดังนี้
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
พัฒนาใน macOS
เครื่องมือบรรทัดคำสั่ง Xcode มี clang เรียกใช้ xcode-select --install หากยังไม่ได้ติดตั้ง
หากต้องการสร้างไบนารีสำหรับ Android คุณต้องติดตั้ง NDK r28b หรือ ใหม่กว่าจาก https://developer.android.com/ndk/downloads#stable-downloads ขั้นตอนที่เฉพาะเจาะจงมีดังนี้
- ดาวน์โหลดไฟล์
.dmgจาก https://developer.android.com/ndk/downloads#stable-downloads - เปิดไฟล์
.dmgแล้วย้ายไฟล์AndroidNDK*ไปยังตำแหน่งที่ต้องการ (เช่น/path/to/AndroidNDK/) - สร้าง
ANDROID_NDK_HOMEเพื่อชี้ไปยังไดเรกทอรี NDK โดยควรมีลักษณะดังนี้
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
เคล็ดลับ: ตรวจสอบว่า ANDROID_NDK_HOME ชี้ไปยังไดเรกทอรีที่มี
README.md อยู่
เมื่อตั้งค่าแล้ว ให้ลองสร้างไบนารี litert_lm_main ดังนี้
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
นอกจากนี้ เราควรสร้างไลบรารี Dispatch API เพื่อให้รันไทม์ LiteRT-LM โต้ตอบกับ NPU ได้ ดังนี้
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
ขั้นตอนที่ 3: เรียกใช้โมเดลในอุปกรณ์
หลังจากสร้างไบนารีเรียบร้อยแล้ว ตอนนี้เราสามารถลองเรียกใช้โมเดลใน อุปกรณ์ได้ ตรวจสอบว่าคุณมีสิทธิ์เขียนในDEVICE_FOLDER
หากต้องการเรียกใช้ไบนารีในอุปกรณ์ Android เราต้องพุชชิ้นงาน
/ไบนารีบางรายการ ก่อนอื่น ให้ตั้งค่า DEVICE_FOLDER และตรวจสอบว่าคุณมีสิทธิ์การเขียน
ในนั้น (โดยปกติคุณจะวางสิ่งต่างๆ ไว้ใน /data/local/tmp/ ได้)
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
ส่งไฟล์ .litertlm เคล็ดลับ: คุณต้องพุชชิ้นงานเหล่านั้นเพียงครั้งเดียว
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
พุช API การเรียกใช้และไบนารีหลักที่คอมไพล์ในขั้นตอนที่ 2
adb push bazel-bin/external/litert/litert/vendors/mediatek/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
ตอนนี้คุณสามารถเรียกใช้ไบนารีได้แล้ว
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm