Khóa học
Gần đây tôi đã viết một bài về cách chạy LLM bằng Python và Torchchat. Torchchat là một framework linh hoạt được thiết kế để thực thi LLM hiệu quả trên nhiều nền tảng phần cứng khác nhau. Chạy LLM cục bộ mang lại một số lợi ích, gồm:
- Truy cập ngoại tuyến: Vì mô hình chạy trên thiết bị của chúng ta nên không cần kết nối internet để sử dụng.
- Quyền riêng tư: Vì tự chúng ta chạy mô hình nên prompt và dữ liệu nhập vào được giữ riêng tư.
- Chi phí: Chúng ta có thể chạy mô hình miễn phí.
Sau đợt phát hành gần đây của Facebook về Llama 3.2, tôi quyết định mở rộng bài viết trước để hướng dẫn cách triển khai lên điện thoại di động, tập trung vào Android.
Dưới đây là tổng quan ở mức cao về những việc cần làm:
- Tải xuống các tệp mô hình, vốn được cung cấp miễn phí vì mô hình là mã nguồn mở.
- Tạo các tệp cần thiết để chạy mô hình trên thiết bị di động.
- Thiết lập một ứng dụng chat Android để thực thi mô hình.
Torchchat cung cấp giải pháp cho tất cả các bước này. Nó có các lệnh để tải mô hình và tạo những tệp cần thiết để chạy. Bên cạnh đó, nó đi kèm một ứng dụng chat Android demo, vì vậy chúng ta không cần tự xây dựng.
Tải Torchchat
Bước đầu tiên là clone kho Torchchat bằng Git:
git clone git@github.com:pytorch/torchchat.git
Chúng ta cũng có thể làm điều này mà không cần Git bằng cách tải xuống qua nút download trên GitHub:

Lưu ý quan trọng: Sau khi clone (hoặc tải) kho, một thư mục tên torchchat sẽ có trên máy tính của chúng ta. Mọi lệnh nêu trong bài này đều cần được thực thi từ bên trong thư mục đó.
Cài đặt Torchchat
Chúng ta giả định rằng Python và Anaconda đã được cài đặt. Nếu chưa, hãy tham khảo hai hướng dẫn này: Cài đặt Anaconda trên Windows và Cách cài đặt Anaconda trên Mac OS X.
Ngoài ra, hãy làm theo các bước trong kho Torchchat, sử dụng môi trường ảo thay vì Anaconda.
Bắt đầu bằng việc tạo một môi trường Anaconda với lệnh:
conda create -yn llama python=3.10.0
Lệnh này tạo môi trường tên llama dùng phiên bản 3.10 của Python. Tùy chọn -yn là kết hợp của -y và -n:
- Tùy chọn
-ycho phép lệnh tiếp tục mà không hỏi xác nhận trước khi tạo môi trường. - Tùy chọn
-nchỉ định tên môi trường, trong trường hợp này làllama. Sau khi tạo môi trường, chúng ta kích hoạt nó và cài đặt các phụ thuộc.
Để kích hoạt, dùng lệnh sau:
conda activate llama
Để cài đặt các phụ thuộc cần thiết, chúng ta dùng script cài đặt do TorchChat cung cấp:
./install/install_requirements.sh
Tải mô hình Llama 3.2 1B
Trong hướng dẫn này, chúng ta sẽ dùng mô hình Llama 3.2 1B, một mô hình một tỷ tham số. Có thể tải về bằng lệnh:
python torchchat.py download llama3.2-1b
Quy trình tương tự để thử nghiệm với các mô hình khác—chỉ cần thay llama3.2-1b bằng bí danh của mô hình mong muốn. Lưu ý chỉ chọn các mô hình được đánh dấu là thân thiện với thiết bị di động.
Torchchat tận dụng Hugging Face để quản lý mô hình. Do đó, tải mô hình yêu cầu tài khoản Hugging Face. Để có hướng dẫn chi tiết về cách tạo tài khoản và đăng nhập từ terminal, hãy xem mục “Downloading a model” trong hướng dẫn Torchchat này.
Ngoài ra, cũng có thể tải mô hình từ trang web chính thức của Llama. Tuy nhiên, dùng Torchchat tiện hơn vì hỗ trợ xuất tệp mô hình để triển khai trên di động.
Xuất mô hình
Để triển khai lên thiết bị di động, trước tiên chúng ta xuất mô hình để tạo .pte artifact là tệp được Executorch sử dụng. Executorch là engine mà Torchchat dùng để chạy LLM trên thiết bị di động.
Để tạo tệp PTE, trước hết phải cài Executorch. Thực hiện bằng cách chạy các lệnh sau:
export TORCHCHAT_ROOT=${PWD}
./torchchat/utils/scripts/install_et.sh
Sau khi cài đặt xong, có thể tạo tệp PTE bằng lệnh:
python torchchat.py export llama3.2-1b --quantize torchchat/quant_config/mobile.json --output-pte-path llama3_2-1b.pte
Lệnh này cũng sẽ lượng tử hóa mô hình, giúp giảm kích thước và tăng tốc suy luận. Chúng ta dùng cấu hình mặc định của Torchchat trong torchchat/quant_config/mobile.json.
Khi quá trình hoàn tất, một tệp tên llama3_2-1b.pte sẽ được tạo trong thư mục torchchat.
Chuẩn bị ứng dụng di động
Torchchat cung cấp một ứng dụng Android demo cho phép chúng ta vận hành Llama trực tiếp trên điện thoại. Dự án demo này nằm trong thư mục Torchchat đã tải về. Đường dẫn tương đối là torchchat/edge/android/torchchat. Lưu ý tham chiếu torchchat đầu tiên trong đường dẫn là một thư mục bên trong kho, không phải thư mục gốc của kho.
Tải và thiết lập thư viện Java
- Tải tệp
.aardo Torchchat cung cấp. Tệp này chứa thư viện Java và thư viện JNI tương ứng để build và chạy ứng dụng. - Đi tới thư mục ứng dụng:
torchchat/edge/android/torchchat/app/ - Tạo một thư mục tên
libs(nếu chưa có) - Đổi tên tệp đã tải thành
executorch.aarvà dán vào thư mụclibs.
Nạp dự án Android trên Android Studio
Tải và cài đặt Android Studio từ trang web chính thức. Khi cài đặt xong, mở dự án:

Dự án demo nằm tại torchchat/edge/android/torchchat.
Khi mở dự án, chúng ta sẽ thấy cửa sổ hỏi có tin cậy mã hay không:

Tại đây, chọn tùy chọn “Trust Project”.
Sau khi mở dự án, Android Studio sẽ cần thời gian để tải cấu hình và hoàn tất thiết lập ban đầu. Quan trọng là chờ đến khi hoàn tất. Có thể theo dõi trạng thái ở góc dưới bên phải cửa sổ. Khi sẵn sàng, nút chạy ở trên cùng sẽ chuyển sang màu xanh lá:

Bật chế độ nhà phát triển trên Android
Để có thể chạy ứng dụng trên điện thoại qua Android Studio, chúng ta cần bật chế độ nhà phát triển trên thiết bị. Cách thực hiện:
- Vào "Cài đặt"
- Chọn "Giới thiệu về thiết bị" hoặc "Giới thiệu về điện thoại"
- Mở “Thông tin phần mềm”
- Tìm “Số hiệu bản dựng” và nhấn bảy lần
Xong! Giờ chúng ta có thể dùng thiết bị để chạy ứng dụng từ Android Studio. Khi làm vậy, ứng dụng sẽ ở lại trên điện thoại, cho phép chạy ngay cả khi không kết nối máy tính.
Cài đặt adb
Ứng dụng cần các tệp mô hình nằm ở một thư mục cụ thể trên điện thoại. Để gửi các tệp đó sang điện thoại, chúng ta dùng adb (Android Debug Bridge). Có thể cài đặt qua Android Studio theo các bước sau:
- Vào phần cài đặt và bắt đầu gõ “Android SDK” trong thanh tìm kiếm
- Tìm menu “Android SDK” và nhấp vào
- Chọn tùy chọn “Android SDK command line tools (latest)”
- Nhấp “Apply” để cài đặt

Lưu ý ở đầu cửa sổ, Android Studio hiển thị vị trí của Android sdk:

Chúng ta sao chép đường dẫn đó và thực thi lệnh sau (thay <android_skd_location> bên dưới bằng đường dẫn vừa sao chép):
export PATH=$PATH:<android_skd_location>/platform-tools/
Để xác nhận adb đã được cài thành công, dùng lệnh adb --version, lệnh này sẽ hiển thị phiên bản adb.
Thiết lập ứng dụng trên điện thoại
Kết nối điện thoại với máy tính bằng cáp. Tên thiết bị sẽ xuất hiện trên danh sách thiết bị cạnh nút chạy:

Trước khi chạy ứng dụng trên điện thoại, giờ chúng ta dùng adb để sao chép các tệp mô hình cần thiết sang thiết bị.
- Tìm id của thiết bị bằng lệnh
adb devices. Có thể có nhiều dòng trong đầu ra. Xác định dòng có dạng<device_code>device và sao chép mã thiết bị. - Tạo thư mục lưu trữ tệp mô hình bằng
adb -s <device_code> shell mkdir -p /data/local/tmp/llama. - Sao chép tệp
.ptenằm trong thư mục torchchat bằngadb -s <device_code> push llama3_2-1b.pte /data/local/tmp/llama. - Xác định vị trí tệp tokenizer của mô hình bằng
python torchchat.py where llama3.2-1b. Lệnh sẽ in ra nhiều dòng, chúng ta quan tâm tới đường dẫn ở dòng cuối.
![]()
- Sao chép tệp tokenizer sang thiết bị bằng
adb -s <device_code> push <model_path>/tokenizer.model /data/local/tmp/llamathay<model_path>bằng đường dẫn thu được ở bước trước.
Sau khi hoàn tất các bước này, các tệp mô hình sẽ có trên điện thoại và sẵn sàng sử dụng. Có thể kiểm tra bằng cách liệt kê tất cả tệp trong thư mục trên thiết bị mà chúng ta vừa tạo:
adb -s <device_code> shell ls
Đầu ra sẽ có hai tệp vừa sao chép:
llama3_2-1b.pte
tokenizer.model
Chạy ứng dụng
Mọi thứ đã sẵn sàng để chạy ứng dụng demo trên điện thoại. Chúng ta có thể nhấp mũi tên xanh để chạy.

Thao tác này sẽ mở ứng dụng trên thiết bị. Ứng dụng sẽ yêu cầu chúng ta chọn các tệp mô hình và tokenizer.

Sử dụng ứng dụng Llama 3.2 1B
Giờ chúng ta có thể bắt đầu trò chuyện với Llama3.2 1B trên điện thoại! Giao diện ứng dụng khá đơn giản. Có thể dùng ô “Prompt” để nhập prompt và gửi tới mô hình bằng nút “Generate”.
Vì mô hình chạy ngoại tuyến, tôi có thể dùng nó trên máy bay đến điểm đến tiếp theo để hỏi, chẳng hạn, vài gợi ý món ăn:

Qua tương tác này, chúng ta thấy một vài hạn chế của ứng dụng demo:
- Câu trả lời lặp lại prompt của chúng ta.
- Định dạng câu trả lời bắt đầu bằng “I’ve been to Taiwan…” cho thấy ứng dụng chưa được thiết kế để dùng mô hình trực tiếp như một trợ lý.
- Phản hồi bị cắt đột ngột, có thể do đã đạt giới hạn token.
Chúng ta có thể so sánh hành vi bằng cách chạy cùng mô hình trên terminal với lệnh:
python torchchat.py chat llama3.2-1b
Chúng tôi cung cấp cùng prompt để xem hành vi có khác không. Thật vậy, trong trường hợp này, câu trả lời có vẻ tự nhiên và hữu ích hơn nhiều, dù cũng bị cắt:

Tôi đã liên hệ với đội ngũ phía sau Torchchat, và họ cho biết Llama 3.2 còn quá mới và ứng dụng demo cần được cập nhật một chút để hỗ trợ.
Tuy nhiên, quy trình thiết lập sẽ vẫn như vậy và kiến thức thu được ở đây vẫn áp dụng cho phiên bản đã cập nhật. Có thể khi bạn đọc bài này, ứng dụng đã được cập nhật và hoạt động bình thường.
Kết luận
Trong hướng dẫn này, chúng ta đã học cách thiết lập Llama 3.2 1B trực tiếp trên thiết bị Android bằng Torchchat. Chúng ta đã đi qua quy trình từng bước để tải và cài đặt các thành phần cần thiết, bao gồm tệp mô hình và ứng dụng Android demo.
Dù ứng dụng demo hiện tại còn một số hạn chế, đặc biệt về định dạng và độ dài phản hồi, tiềm năng nền tảng của những triển khai như vậy là rất lớn.
Nếu bạn muốn đọc thêm về Llama 3.2, tôi gợi ý các blog sau:
