Chuyển đổi mô hình LLaMA 3 sang định dạng GGUF và triển khai với Ollama

1. Chuyển đổi mô hình từ Hugging Face sang định dạng GGUF

Để chuyển đổi mô hình LLaMA 3 từ định dạng Hugging Face (HF) sang định dạng GGUF, cần sử dụng script convert_hf_to_gguf.py có sẵn trong kho mã nguồn llama.cpp.Quá trình cài đặt một số phụ thuộc có thể yêu cầu gỡ bỏ PyTorch — do đó nên thực hiện trên một máy riêng biệt.

Cài đặt môi trường chuyển đổi
git clone https://github.com/ggerganov/llama.cpp.git
pip install -r llama.cpp/requirements.txt
Chạy chuyển đổi (không lượng tử hóa)
python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct \
  --outtype f16 \
  --verbose \
  --outfile llama3-8b-f16.gguf
Chạy chuyển đổi (có lượng tử hóa)
python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct \
  --outtype q8_0 \
  --verbose \
  --outfile llama3-8b-q8_0.gguf
Mô tả các mức lượng tử hóa --outtype
  • q2_k: Một số tensor dùng độ chính xác cao, phần còn lại dùng mức cơ bản.
  • q3_k_l/m/s: Cân bằng giữa hiệu năng và chất lượng bằng cách áp dụng độ chính xác khác nhau lên các tensor.
  • q4_0: Lượng tử hóa 4-bit cơ bản (bản gốc).
  • q4_1, q4_k_m, q4_k_s: Phiên bản cải tiến với sự cân bằng giữa tốc độ và độ chính xác.
  • q5_0, q5_1, q5_k_m, q5_k_s: Cải thiện độ chính xác hơn q4, nhưng đòi hỏi nhiều tài nguyên hơn và tốc độ suy luận chậm hơn.
  • q6_k, q8_0: Độ chính xác cao nhất — phù hợp với môi trường không hạn chế tài nguyên.
  • fp16, f32: Không dùng lượng tử hóa, giữ nguyên độ chính xác gốc.

2. Triển khai mô hình GGUF bằng Ollama

Ollama hỗ trợ chạy các mô hình được định dạng GGUF một cách trực tiếp. Dưới đây là quy trình hoàn chỉnh:

Cài đặt Ollama
curl -fsSL https://ollama.com/install.sh | sh

Khởi động dịch vụ Ollama (cần chạy trước khi tạo mô hình tùy chỉnh):

ollama serve
Tạo file mô hình tùy chỉnh (ModelFile)
# Đặt tên file: `Modelfile` (không có phần mở rộng)
FROM ./llama3-8b-q8_0.gguf

TEMPLATE """<|begin▁of▁sentence|>{{ if .System }}{{ .System }}{{ end }}{{ range .Messages }}{{ if eq .Role "user" }}<|User|>{{ .Content }}<|Assistant|>{{ else if eq .Role "assistant" }}{{ .Content }}<|end▁of▁sentence|>{{ end }}{{ end }}"""

PARAMETER stop "<|end▁of▁sentence|>"
PARAMETER num_ctx 4096
Tạo mô hình tùy chỉnh trong Ollama
ollama create llama3-8b-instruct --file ./Modelfile

Sau khi tạo xong, chạy mô hình bằng lệnh:

ollama run llama3-8b-instruct

Thẻ: llama.cpp gguf llama-3 ollama quantization

Đăng vào ngày 1 tháng 7 lúc 17:40