
Sử dụng Scikit-LLM với các mô hình ngôn ngữ lớn (LLM) mã nguồn mở
Bài viết này sẽ hướng dẫn cách thực hiện một tác vụ ngôn ngữ như phân loại văn bản bằng cách tích hợp các mô hình ngôn ngữ lớn (LLM) có kích thước vừa phải, được lưu trữ cục bộ, như Mistral, Gemma và Llama 3. Tất cả đều miễn phí nhờ Ollama – một kho lưu trữ miễn phí cho các LLM cục bộ – và thư viện Python Scikit-LLM.
Sử dụng Scikit-LLM với các mô hình ngôn ngữ lớn (LLM) mã nguồn mở
Bài viết này sẽ hướng dẫn cách sử dụng các mô hình ngôn ngữ được lưu trữ cục bộ thông qua Ollama để thực hiện các tác vụ phân loại văn bản, mà không tốn chi phí cho các cuộc gọi API.
Các chủ đề được đề cập bao gồm:
Cách cài đặt Ollama và tải các mô hình mã nguồn mở như Llama 3, Mistral và Gemma để chạy cục bộ trên máy tính.
Cách cấu hình thư viện Scikit-LLM để định tuyến các yêu cầu đến một điểm cuối Ollama cục bộ thay vì một API đám mây trả phí.
Cách xây dựng bộ phân loại văn bản zero-shot (phân loại không cần huấn luyện) bằng cách sử dụng mô hình ngôn ngữ lớn cục bộ và Scikit-LLM theo quy trình làm việc quen thuộc kiểu scikit-learn.
Sử dụng Scikit-LLM với các LLM mã nguồn mở
Giới thiệu
Bài viết này sẽ hướng dẫn cách thực hiện một tác vụ ngôn ngữ như phân loại văn bản bằng cách tích hợp các mô hình ngôn ngữ lớn (LLM) có kích thước vừa phải được lưu trữ cục bộ, như Mistral, Gemma và Llama 3: tất cả đều miễn phí nhờ Ollama — một kho lưu trữ miễn phí cho các LLM cục bộ — và thư viện Python Scikit-LLM.
Điều kiện tiên quyết: Cài đặt Ollama
Nên sử dụng một môi trường phát triển tích hợp (IDE) để thực hiện hướng dẫn này, vì cần tương tác với phiên bản Ollama đã cài đặt cục bộ từ đó. Nếu chưa quen với Ollama, nên đọc bài viết này trước. Tuy nhiên, dưới đây là tóm tắt các bước cần thực hiện trong terminal dòng lệnh cục bộ để tải xuống một LLM cục bộ sau khi cài đặt Ollama trên máy tính.
```
# Tải Llama 3 (một trong những mô hình phổ biến nhất của Ollama)
ollama run llama3
# Hoặc thay vào đó, thử tải Mistral
ollama run mistral
# Hoặc, nếu muốn, hãy tải Gemma của Google
ollama run gemma
```
Khi cửa sổ tương tác mô hình xuất hiện trong terminal, có thể gõ “/bye” để giữ cho nó chạy ngầm, chờ các cuộc gọi API. Trong khi đó, trong một dự án mới được tạo trong IDE Python, cần cài đặt các thư viện sau:
```
pip install scikit-learn pandas scikit-llm
```
Nếu gặp lỗi “Module not found” khi thực thi mã Python, hãy thử cài đặt từng phụ thuộc một.
Bây giờ, hãy điền vào tệp mã Python (đặt tên tùy ý!), từng bước một. Đầu tiên, tất nhiên, là các lệnh nhập. Một trong số đó là lớp ZeroShotGPTClassifier. Tương tự như scikit-learn cổ điển, đây là một lớp chuyên dụng để huấn luyện và sử dụng một mô hình cho phân loại zero-shot: cụ thể là một LLM từ Ollama.
```
import pandas as pd
from sklearn.model_selection import train_test_split
from skllm.config import SKLLMConfig
from skllm.models.gpt.classification.zero_shot import ZeroShotGPTClassifier
```
Tiếp theo, cần áp dụng một vài cấu hình cụ thể để có thể giao tiếp với Ollama.
Sử dụng lệnh này để định tuyến các yêu cầu đám mây của Scikit-LLM tới cổng Ollama cục bộ mặc định của bạn.
SKLLMConfig.set_gpt_url("http://localhost:11434/v1")
Theo mặc định, Scikit-LLM cần một khóa để vượt qua các kiểm tra xác thực nội bộ. Tuy nhiên, vì Ollama là cục bộ và miễn phí, chuỗi này sẽ bị bỏ qua trong thực tế.
SKLLMConfig.set_openai_key("local-ollama-is-free")
Sau đó, chúng tôi tạo một tập dữ liệu nhỏ và chuẩn bị cho việc phân loại. Vì chúng tôi sẽ không đánh giá hiệu suất phân loại của mô hình trong hướng dẫn này – mục tiêu chính của chúng tôi là tìm hiểu cách sử dụng Scikit-LLM cục bộ với các mô hình mã nguồn mở như những mô hình có sẵn thông qua Ollama – nên chúng tôi không cần một số lượng lớn các ví dụ dữ liệu.
data = {
"review": [
"Bản cập nhật macOS mới thật tuyệt vời và chạy mượt mà.",
"Pin của tôi cạn kiệt cực nhanh sau bản vá.",
"Tôi cần trợ giúp đặt lại mật khẩu tài khoản của mình.",
"Màn hình trên chiếc màn hình này sắc nét đến kinh ngạc.",
"Bộ phận hỗ trợ khách hàng đã cúp máy, rất đáng thất vọng."
],
"category": [
"Phản hồi tích cực",
"Sự cố kỹ thuật",
"Yêu cầu hỗ trợ",
"Phản hồi tích cực",
"Phản hồi tiêu cực"
]
}
df = pd.DataFrame(data)
X = df["review"]
y = df["category"]
# Chia dữ liệu thành các tập huấn luyện/kiểm tra
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
Tập dữ liệu chứa các đánh giá của người dùng và các danh mục tương ứng, ví dụ: các loại yêu cầu hoặc phản hồi của khách hàng. Chúng tôi cũng đã thực hiện chia tập huấn luyện/kiểm tra như thường lệ với máy học.




Nguồn tin: Machine Learning Mastery — Tác giả: Iván Palomares Carrascosa. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.