
Điều chỉnh cài đặt mô hình ngôn ngữ cục bộ với Ollama
Trong bài viết này, chúng ta sẽ đi sâu vào cơ chế cấu hình của Ollama, khám phá cách tinh chỉnh các tham số của mô hình ngôn ngữ cục bộ.
## Điều chỉnh cài đặt mô hình ngôn ngữ cục bộ với Ollama - KDnuggets
### Giới thiệu
Các mô hình ngôn ngữ tiếp tục định hình cách các chuyên gia và nhà phát triển học máy xây dựng ứng dụng. Sự ra đời của các mô hình ngôn ngữ nhỏ (SLM) mạnh mẽ, nhỏ gọn đã bổ sung một lớp thú vị vào hỗn hợp này. Bằng cách bỏ qua các API của bên thứ ba, việc chạy các mô hình cục bộ đảm bảo quyền riêng tư dữ liệu hoàn toàn, loại bỏ chi phí API trên mỗi token và cho phép hoạt động ngoại tuyến. Trong số các công cụ thúc đẩy cuộc cách mạng này, Ollama đã nổi lên như một trong những tiêu chuẩn để chạy suy luận cục bộ nhờ công cụ dựa trên Go nhẹ, CLI đơn giản và hệ thống quản lý mô hình giống Docker mạnh mẽ.
Tuy nhiên, việc chỉ kéo một mô hình và chạy nó với các cài đặt mặc định hiếm khi là tối ưu. Các cấu hình mặc định được điều chỉnh cho một đối tượng rộng, có mục đích chung, thường ưu tiên trò chuyện an toàn, đàm thoại hơn hiệu suất, suy luận xác định hoặc các nhu cầu hệ thống chuyên biệt. Nếu bạn đang xây dựng một trợ lý mã hóa, một đường ống ETL tự động hoặc một hệ thống đa tác nhân, các cấu hình mặc định có thể dẫn đến độ trễ cao, giới hạn cửa sổ ngữ cảnh hoặc đầu ra ngẫu nhiên và không thể đoán trước.
Để nâng cao các ứng dụng AI cục bộ của bạn, bạn cần hiểu cách điều chỉnh cả siêu tham số cấp mô hình và môi trường thời gian chạy cấp máy chủ. Trong bài viết này, chúng ta sẽ đi sâu vào bên trong công cụ cấu hình của Ollama, khám phá cách tinh chỉnh các tham số mô hình ngôn ngữ cục bộ bằng Ollama Modelfile, tối ưu hóa hiệu suất phần cứng bằng các biến môi trường máy chủ và định dạng các luồng nhắc chính xác bằng cú pháp mẫu Go.
### 1. Ollama Modelfile: Bản thiết kế mô hình cục bộ của bạn
Giống như Dockerfile định nghĩa cách một container được xây dựng, Ollama Modelfile là một tệp cấu hình khai báo định nghĩa cách một mô hình ngôn ngữ cục bộ nên hoạt động. Nó cho phép bạn tùy chỉnh các hướng dẫn hệ thống, điều chỉnh các tham số mô hình và đóng gói các cấu hình này vào một biến thể mô hình mới, có thể tái sử dụng mà bạn có thể chạy bằng một lệnh duy nhất.
Một Modelfile cơ bản bao gồm một tham chiếu mô hình cơ sở (sử dụng chỉ thị FROM), các hướng dẫn cấp hệ thống (sử dụng SYSTEM) và các sửa đổi tham số (sử dụng chỉ thị PARAMETER):
```
// Ví dụ: Một Modelfile dành cho nhà phát triển tùy chỉnh
# Sử dụng Llama 3.1 8B làm mô hình cơ sở
FROM llama3.1:8b
# Đặt các tham số cấp mô hình
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
PARAMETER min_p 0.05
# Định nghĩa tính cách hệ thống và hướng dẫn hành vi
SYSTEM """Bạn là một kỹ sư phần mềm ưu tú, cực kỳ chính xác.
Cung cấp các giải pháp mã ngắn gọn, mô-đun và tối ưu.
Không bao gồm các từ ngữ đàm thoại trừ khi được yêu cầu rõ ràng."""
```
Để biên dịch và chạy mô hình tùy chỉnh, người dùng sử dụng lệnh `ollama create` trong terminal:
```
# Tạo mô hình có tên 'dev-llama' từ Modelfile
ollama create dev-llama -f ./Modelfile
# Chạy mô hình vừa tạo
ollama run dev-llama
```
Bằng cách tích hợp trực tiếp các tham số này vào định nghĩa mô hình, mọi ứng dụng hoặc lệnh gọi API truy vấn `dev-llama` sẽ kế thừa các tối ưu hóa này ngay lập tức, mà không cần truyền tải các gói tham số JSON thô trong mỗi yêu cầu API.
**2. Tinh chỉnh các tham số lấy mẫu (Sampling Parameters)**
Khi một mô hình tạo văn bản, nó không "biết" các từ; nó tính toán phân phối xác suất trên từ vựng của mình cho token có khả năng xuất hiện tiếp theo. Các tham số lấy mẫu quy định cách công cụ chọn token tiếp theo từ phân phối này. Việc điều chỉnh các cài đặt này là cách hiệu quả nhất để điều chỉnh sự sáng tạo và độ chính xác của mô hình phù hợp với trường hợp sử dụng cụ thể.
**Nhiệt độ (Temperature): Nút điều chỉnh độ ngẫu nhiên**
Tham số nhiệt độ kiểm soát việc điều chỉnh phân phối xác suất token. Về mặt toán học, nó chia các logit thô (điểm trước softmax) được tạo bởi mô hình trước khi chúng được chuyển đổi thành xác suất:
* **Nhiệt độ thấp (ví dụ: 0,1 đến 0,2):** Làm phẳng các tùy chọn có xác suất thấp và khuếếch đại các tùy chọn có xác suất cao. Điều này dẫn đến các kết quả hoàn thành có tính xác định cao, nhất quán và logic. Lý tưởng cho việc tạo mã, suy luận toán học, trích xuất dữ liệu có cấu trúc (JSON/YAML) và tóm tắt thông tin thực tế.
* **Nhiệt độ cao (ví dụ: 0,8 đến 1,2):** Làm phẳng sự khác biệt giữa các xác suất token, làm cho các token ít có khả năng xuất hiện trở nên cạnh tranh hơn. Điều này tạo ra sự đa dạng, ngẫu nhiên và "sáng tạo" trong các phản hồi. Lý tưởng cho viết sáng tạo và động não.
```
# Cấu hình cho các tác vụ có tính xác định cao, có cấu trúc
PARAMETER temperature 0.1
```
**Top-K, Top-P và Min-P: Thu hẹp nhóm token**
Nếu không được kiểm soát, ngay cả ở nhiệt độ thấp, các mô hình đôi khi có thể chọn các token không phù hợp từ phần cuối của phân phối xác suất. Để ngăn chặn điều này, các công cụ mô hình lọc nhóm token hoạt động trước khi chọn token cuối cùng.
* **Top-K (ví dụ: 40):** Hạn chế nhóm token chỉ còn K token có xác suất cao nhất. Bất kỳ token nào có thứ hạng thấp hơn 40 đều bị loại bỏ ngay lập tức, bất kể xác suất thực tế của nó. Đây là một cách thô sơ nhưng hiệu quả để loại bỏ các token có tính thất thường cao.
* **Top-P / Lấy mẫu hạt nhân (Nucleus Sampling) (ví dụ: 0,90):** Hạn chế nhóm token thành một tập hợp động các token có xác suất tích lũy vượt quá ngưỡng P. Ví dụ, ở 0,90, Ollama sắp xếp tất cả các token từ xác suất cao nhất đến thấp nhất và
Nguồn tin: KDnuggets — Tác giả: Matthew Mayo. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.