Điểm chính
- Chạy cục bộ cần đủ RAM hoặc VRAM cho tệp lượng tử hóa cộng thêm cửa sổ ngữ cảnh.
- Ollama là cách bắt đầu nhanh nhất; llama.cpp cung cấp nhiều quyền kiểm soát hơn về lượng tử hóa và các cờ.
- Cả hai đều cung cấp máy chủ kiểu OpenAI, nên mã client giống nhau có thể trỏ đến cục bộ hoặc lưu trữ.
- Endpoint lưu trữ có giá $0,15 cho mỗi 1M token đầu vào và $0,50 cho mỗi 1M token đầu ra, mất vài phút để thiết lập.
Hãy quyết định trước: bạn có phần cứng gì?
Bộ nhớ quyết định mọi thứ. Mô hình ngôn ngữ là một tập hợp số rất lớn, và toàn bộ tập hợp phải nằm trong bộ nhớ nhanh trong khi nó tạo ra. Lượng tử hóa thu nhỏ các số đó. Mô hình lượng tử hóa 4-bit chiếm khoảng nửa byte cho mỗi tham số, nên mô hình 8 tỷ tham số chiếm khoảng 5 GB, và mô hình 70 tỷ chiếm khoảng 40 GB. Hãy coi đây là các con số xấp xỉ vì kích thước chính xác phụ thuộc vào định dạng lượng tử hóa.
Ngoài trọng số, bạn cần không gian cho cửa sổ ngữ cảnh. Nó tăng theo độ dài prompt, nên lịch sử đóng vai trò dài hoặc tài liệu lớn tốn nhiều bộ nhớ hơn một câu hỏi ngắn. Hãy dành vài gigabyte bổ sung ở ngữ cảnh vừa phải, nhiều hơn nếu bạn đẩy về prompt dài.
- Laptop 8 GB không GPU: chỉ mô hình nhỏ, xuất chậm.
- Mac Apple Silicon 16 đến 32 GB: mô hình cỡ trung chạy tốt vì CPU và GPU chia sẻ bộ nhớ.
- GPU người dùng đơn với 12 đến 24 GB VRAM: mô hình cỡ trung với tốc độ tốt.
- Lớn hơn nữa: nhiều GPU hoặc máy chủ thuê.
Phương pháp 1: Ollama qua vài lệnh
Ollama là con đường ngắn nhất. Nó tải xuống một mô hình đã lượng tử hóa, khởi động máy chủ nền và cung cấp một prompt chat. Cài đặt nó từ trang chủ dành cho hệ điều hành của bạn, sau đó kiểm tra xem thư viện mô hình Ollama hiện liệt kê những tag nào của Dolphin, vì tên và kích thước thay đổi giữa các bản phát hành.
# replace <tag> with a Dolphin tag from the Ollama library
ollama pull <tag>
ollama run <tag>
Lệnh đầu tiên tải xuống tệp, có thể mất thời gian trên kết nối chậm. Lệnh thứ hai mở chat tương tác trong terminal. Ollama cũng cung cấp API HTTP trên máy của bạn, bao gồm tuyến đường kiểu OpenAI dưới /v1, nên các chương trình khác có thể sử dụng nó.
Nếu quá trình sinh văn bản rất chậm, có thể mô hình không vừa vào VRAM và một phần của nó chạy trên CPU. Hãy chọn một tag nhỏ hơn hoặc lượng tử hóa ít bit hơn.
Phương pháp 2: llama.cpp để kiểm soát nhiều hơn
llama.cpp là engine C++ mà nhiều công cụ khác được xây dựng dựa trên đó. Bạn tải xuống tệp GGUF của mô hình, sau đó khởi động máy chủ của nó. Điều này đòi hỏi nhiều bước hơn Ollama nhưng cho phép bạn đặt độ dài ngữ cảnh, số lớp đặt trên GPU và lượng tử hóa bạn muốn.
# after building llama.cpp and downloading a GGUF file
llama-server -m ./model.gguf -c 8192 -ngl 99 --port 8080
Ở đây -c đặt độ dài ngữ cảnh, -ngl đặt số lớp đi đến GPU, và --port chọn cổng. Kiểm tra README của dự án để biết các cờ trong phiên bản của bạn, vì chúng thay đổi. -c lớn hơn sử dụng nhiều bộ nhớ hơn, nên chỉ tăng khi bạn cần.
Để sử dụng giao diện đồ họa, các giao diện người dùng như Open WebUI có thể kết nối với cả hai máy chủ. Ghi chú của chúng tôi về endpoint API Open WebUI cho thấy cách thêm một endpoint tùy chỉnh.
Gọi máy chủ cục bộ từ mã
Cả hai công cụ đều hỗ trợ định dạng chat OpenAI, vì vậy bạn chỉ cần viết client một lần và chuyển đổi mục tiêu bằng hai cài đặt. Script này giữ cả hai mục tiêu cạnh nhau. Mục cục bộ sử dụng cổng mà Ollama sử dụng theo mặc định; hãy thay đổi nó nếu bạn đã khởi động llama.cpp trên cổng 8080.
from openai import OpenAI
TARGETS = {
"local": {"base_url": "http://localhost:11434/v1", "key": "not-needed", "model": "your-local-tag"},
"hosted": {"base_url": "https://api.dolphinllm.com/v1", "key": "YOUR_KEY", "model": "uncensored"},
}
t = TARGETS["hosted"]
client = OpenAI(base_url=t["base_url"], api_key=t["key"])
resp = client.chat.completions.create(
model=t["model"],
messages=[{"role": "user", "content": "Summarize what a GGUF file is."}],
)
print(resp.choices[0].message.content)
Máy chủ cục bộ thường bỏ qua khóa, nhưng SDK yêu cầu chuỗi không rỗng. Tên mô hình cho máy chủ cục bộ là bất kỳ thẻ hoặc bí danh nào bạn đã tải, trong khi ID mô hình lưu trữ luôn là uncensored.
Phương pháp 3: bỏ qua thiết lập và dùng endpoint lưu trữ
Nếu tính toán phần cứng không tốt, hoặc bạn muốn hành vi giống nhau trên mọi máy, một endpoint được lưu trữ sẽ đơn giản hơn. Dịch vụ này cung cấp một mô hình trọng số mở, do một nhà cung cấp độc lập vận hành và được tinh chỉnh để trả lời mà không từ chối nội dung cho mục đích sử dụng người trưởng thành hợp pháp. Đây không phải là API chính thức của bất kỳ nhà cung cấp mô hình nào, và nó không cho phép bạn chọn các mô hình khác. Những gì bạn nhận được là một URL ổn định, một khóa và thanh toán theo token.
Các bước rất ngắn. Đăng ký với Google hoặc với email và mật khẩu, mở trang khóa API và nhận $0,50 tín dụng dùng thử chỉ với một cú nhấp chuột. Không cần thẻ thanh toán, có hiệu lực trong 7 ngày và giới hạn mỗi người một lần. Sau đó chạy script Python ở trên với mục tiêu lưu trữ. Nếu bạn thích curl:
curl https://api.dolphinllm.com/v1/chat/completions -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":false}'
Cửa sổ ngữ cảnh là 100.000 token, nhiều hơn hầu hết máy tính xách tay có thể giữ trong bộ nhớ cache một cách thoải mái. Prompt không được dùng để huấn luyện.
Chi phí và nỗ lực so sánh
Chạy cục bộ có vẻ miễn phí, nhưng không phải vậy. Bạn trả tiền cho phần cứng, điện và thời gian của chính mình. Dịch vụ lưu trữ tốn tiền cho mỗi yêu cầu, nhưng các con số rất nhỏ. Ở mức $0,15 cho 1 triệu token đầu vào và $0,50 cho 1 triệu token đầu ra, một lượt chat với 3.000 token đầu vào và 700 token đầu ra sẽ tốn:
- Đầu vào: 3.000 x $0,15 / 1.000.000 = $0,00045
- Đầu ra: 700 x $0,50 / 1.000.000 = $0,00035
- Tổng cộng: $0,0008 cho mỗi lượt, tức là $0,80 cho 1.000 lượt
Ngay cả một người dùng nặng tải gửi 5.000 lượt như vậy trong một tháng cũng sẽ chi khoảng $4. Một GPU có giá trị hàng trăm đô la sẽ cần nhiều năm sử dụng để hòa vốn với khối lượng đó. Sự so sánh đảo ngược khi bạn có khối lượng cao liên tục, cần một mô hình tinh chỉnh cụ thể hoặc không thể gửi dữ liệu ra khỏi máy của mình.
Chi tiết giá đầy đủ, bao gồm các khoản thưởng nạp tiền +5%, +10% và +15%, có trên trang giá, và tài liệu bao gồm các giới hạn và tham số.
Một quy tắc đơn giản để chọn lựa
Chạy cục bộ nếu bạn muốn thử nghiệm với nhiều mô hình tinh chỉnh, làm việc ngoại tuyến hoặc giữ mọi prompt trên đĩa của riêng bạn. Sử dụng endpoint lưu trữ nếu bạn đang xây dựng thứ gì đó mà người khác sẽ sử dụng, nếu phần cứng của bạn khiêm tốn hoặc nếu bạn muốn một ngữ cảnh 100.000 token dài mà không cần quản lý bộ nhớ. Nhiều nhà phát triển làm cả hai: một mô hình cục bộ để tự mày mò riêng tư, và một endpoint lưu trữ cho bất cứ thứ gì cần hoạt động liên tục. Vì mã client giống nhau, việc chuyển đổi chỉ tốn một dòng.

