Chào mừng các bạn quay trở lại với series “AI Engineer Roadmap”! Trong các bài viết trước, chúng ta đã cùng nhau khám phá nhiều khía cạnh quan trọng trên hành trình trở thành một Kỹ sư AI hiện đại, từ việc tìm hiểu Kỹ sư AI là gì, sự khác biệt giữa Kỹ sư AI và ML, cho đến việc làm quen với các mô hình AI được huấn luyện trước, các API thương mại hàng đầu như OpenAI, cũng như cách làm việc với các mô hình mã nguồn mở trên Hugging Face.
Chúng ta cũng đã bàn luận về những thách thức khi sử dụng API bên ngoài, như chi phí (tokens và chi phí API), quyền riêng tư (thiên vị, công bằng, quyền riêng tư) và sự phụ thuộc vào nhà cung cấp. Điều này đặt ra một câu hỏi lớn: làm thế nào để tận dụng sức mạnh của các Large Language Model (LLM) một cách linh hoạt hơn, kiểm soát dữ liệu tốt hơn, và giảm thiểu chi phí khi chỉ đơn giản là muốn thử nghiệm hoặc chạy ứng dụng ở quy mô nhỏ?
Câu trả lời chính là: chạy LLM ngay trên máy tính cá nhân của bạn! Và công cụ giúp việc này trở nên dễ dàng hơn bao giờ hết chính là Ollama. Trong bài viết này, chúng ta sẽ cùng nhau đi sâu vào Ollama là gì, tại sao nó lại quan trọng đối với Kỹ sư AI, và cách để bắt đầu sử dụng nó.
Mục lục
Ollama là gì?
Nói một cách đơn giản, Ollama là một công cụ giúp bạn dễ dàng tải xuống và chạy các mô hình ngôn ngữ lớn (LLM) mã nguồn mở ngay trên máy tính hoặc máy chủ cục bộ của bạn. Hãy tưởng tượng nó như một Docker dành cho LLM mã nguồn mở.
Trước đây, việc chạy các LLM mã nguồn mở như Llama, Mistral hay Gemma thường yêu cầu bạn phải cài đặt phức tạp các thư viện AI, xử lý vấn đề phụ thuộc phần cứng (đặc biệt là GPU), tải xuống các file model khổng lồ và cấu hình chúng. Ollama đã đơn giản hóa toàn bộ quy trình này.
Với Ollama, bạn chỉ cần cài đặt một ứng dụng duy nhất, sau đó sử dụng các câu lệnh đơn giản để tải về các mô hình mong muốn và bắt đầu chạy chúng. Ollama tự động xử lý việc cài đặt các thư viện cần thiết, quản lý trọng số mô hình và cung cấp giao diện (cả dòng lệnh và API) để bạn tương tác.
Tại sao Kỹ sư AI nên quan tâm đến Ollama?
Có nhiều lý do khiến Ollama trở thành một công cụ không thể thiếu trong bộ kỹ năng của một Kỹ sư AI, đặc biệt là khi bạn đang làm quen với lộ trình học Kỹ sư AI:
- Dễ dàng thử nghiệm và học hỏi: Bạn có thể nhanh chóng tải xuống và chạy nhiều mô hình khác nhau để so sánh, hiểu rõ hơn về cách chúng hoạt động mà không tốn kém chi phí API hay mất công cấu hình phức tạp. Điều này cực kỳ hữu ích khi bạn muốn tìm hiểu về các mô hình trên Hugging Face và chạy chúng offline.
- Bảo mật và Quyền riêng tư: Dữ liệu của bạn được xử lý hoàn toàn cục bộ. Điều này rất quan trọng khi làm việc với thông tin nhạy cảm hoặc trong các môi trường yêu cầu bảo mật cao. Bạn không cần gửi dữ liệu qua internet đến các API bên thứ ba. Điều này liên quan trực tiếp đến các vấn đề chúng ta đã thảo luận về quyền riêng tư trong AI.
- Giảm chi phí: Sau khi đầu tư ban đầu vào phần cứng (chúng ta sẽ nói về điều này sau), việc chạy mô hình bằng Ollama là hoàn toàn miễn phí. Không có chi phí theo token hay theo yêu cầu như khi sử dụng các dịch vụ cloud. Điều này giúp bạn thoải mái thử nghiệm, phát triển ứng dụng mà không lo “cháy túi”.
- Làm việc ngoại tuyến: Khi các mô hình đã được tải về, bạn có thể chạy chúng mà không cần kết nối internet. Rất tiện lợi cho việc làm việc ở những nơi không có mạng hoặc trong các ứng dụng cần tính di động cao.
- Linh hoạt tùy chỉnh: Ollama cho phép bạn tạo ra các phiên bản tùy chỉnh của mô hình bằng cách sử dụng ModelFiles (chúng ta sẽ tìm hiểu sau). Bạn có thể đóng gói một mô hình nền với các thiết lập tham số riêng, lời nhắc hệ thống (system prompt) hoặc thậm chí là kết hợp trọng số từ các mô hình khác.
- Cầu nối giữa Mã nguồn mở và Ứng dụng: Ollama cung cấp một API cục bộ tương thích với nhiều thư viện phổ biến như LangChain, LlamaIndex, giúp bạn dễ dàng tích hợp các mô hình LLM mã nguồn mở vào ứng dụng của mình. Điều này làm cho việc xây dựng ứng dụng với AI mã nguồn mở trở nên khả thi hơn rất nhiều.
Bắt đầu với Ollama
Việc cài đặt Ollama khá đơn giản. Bạn chỉ cần truy cập trang web chính thức của Ollama (ollama.com) và tải xuống trình cài đặt phù hợp với hệ điều hành của mình (macOS, Windows, Linux). Quá trình cài đặt diễn ra nhanh chóng.
Sử dụng Giao diện Dòng lệnh (CLI)
Cách cơ bản nhất để tương tác với Ollama là thông qua giao diện dòng lệnh. Sau khi cài đặt, bạn có thể mở Terminal (trên macOS/Linux) hoặc Command Prompt/PowerShell (trên Windows).
Đầu tiên, bạn cần tải về một mô hình. Ollama cung cấp một danh sách các mô hình phổ biến trên trang web của họ, thường là các phiên bản lượng tử hóa (quantized) của các mô hình lớn để chạy hiệu quả hơn trên phần cứng consumer. Ví dụ, để tải mô hình Llama 2:
ollama pull llama2
Lệnh này sẽ tải về mô hình Llama 2 mặc định. Bạn có thể chỉ định các phiên bản cụ thể, ví dụ `llama2:13b` hoặc `mistral:7b-instruct-v0.2`. Kích thước file model có thể vài GB, nên quá trình tải xuống có thể mất một chút thời gian tùy thuộc vào tốc độ mạng của bạn.
Sau khi tải xong, bạn có thể bắt đầu chạy mô hình:
ollama run llama2
Lệnh này sẽ đưa bạn vào một phiên tương tác với mô hình Llama 2. Bạn có thể gõ câu hỏi hoặc lời nhắc (prompt) và mô hình sẽ phản hồi.
> send a message to the moon
Alright, here's a message to the moon:
Subject: A Hello from Earth!
Dearest Moon,
Just wanted to send a little hello from your neighbor, Earth. We've been admiring you from afar for quite some time now. You look lovely tonight!
Hope you're having a good orbit.
Warmly,
Your friends on Earth
> what is the capital of france?
The capital of France is Paris.
> exit
Để thoát khỏi phiên tương tác, bạn chỉ cần gõ `exit` hoặc nhấn `Ctrl + D` (trên macOS/Linux) / `Ctrl + Z` rồi Enter (trên Windows).
Bạn cũng có thể gửi một prompt trực tiếp từ dòng lệnh:
ollama run llama2 "Write a short poem about the ocean."
Ollama sẽ chạy mô hình Llama 2, xử lý prompt và in kết quả ra màn hình.
Bạn có thể xem danh sách các mô hình đã tải về:
ollama list
Và xóa một mô hình không dùng nữa:
ollama rm llama2
Làm việc với Ollama: Vượt ra ngoài Dòng lệnh
Mặc dù CLI rất tiện lợi cho việc thử nghiệm nhanh, Ollama còn cung cấp một API cục bộ cho phép bạn tích hợp LLM vào các ứng dụng của mình. API này chạy mặc định trên cổng 11434.
Bạn có thể tương tác với API này bằng bất kỳ ngôn ngữ lập trình nào. Dưới đây là ví dụ đơn giản bằng Python:
import requests
import json
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama2", # Thay bằng tên model bạn đã tải
"prompt": "Write a short story about a robot learning to love.",
"stream": False # Đặt True nếu bạn muốn nhận phản hồi theo stream
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, data=json.dumps(payload), headers=headers)
if response.status_code == 200:
result = response.json()
print(result['response'])
else:
print(f"Error: {response.status_code}")
print(response.text)
Đoạn code này gửi một yêu cầu POST đến API của Ollama để tạo văn bản dựa trên prompt được cung cấp. API này rất linh hoạt và cho phép bạn kiểm soát nhiều tham số khác nhau của quá trình tạo văn bản (temperature, top_p, v.v.), tương tự như các API cloud bạn đã làm quen (OpenAI API).
Tạo Mô hình Tùy chỉnh với ModelFiles
Một trong những tính năng mạnh mẽ của Ollama là khả năng tùy chỉnh mô hình bằng cách sử dụng ModelFiles. ModelFile tương tự như Dockerfile, mô tả cách xây dựng một mô hình mới dựa trên một mô hình nền (base model).
Ví dụ, bạn có thể tạo một ModelFile để đóng gói mô hình Mistral với một System Prompt cố định:
FROM mistral:7b-instruct-v0.2
PARAMETER temperature 0.8
SYSTEM """
You are a helpful assistant that translates English text into Vietnamese.
Respond only with the Vietnamese translation.
"""
Trong ModelFile này:
- `FROM mistral:7b-instruct-v0.2`: Chỉ định mô hình nền là Mistral 7B instruct.
- `PARAMETER temperature 0.8`: Đặt tham số temperature mặc định cho mô hình. Bạn có thể thêm các tham số khác như `top_k`, `top_p`, `num_ctx` (kích thước cửa sổ ngữ cảnh – liên quan đến bài tokens và cửa sổ ngữ cảnh).
- `SYSTEM “…”`: Đặt lời nhắc hệ thống cố định. Mỗi lần bạn chạy mô hình này, lời nhắc này sẽ được thêm vào đầu ngữ cảnh.
Lưu nội dung trên vào một file, ví dụ `translator.Modelfile`. Sau đó, bạn có thể tạo mô hình mới từ ModelFile này:
ollama create my-vietnamese-translator -f ./translator.Modelfile
Bây giờ, bạn có thể chạy mô hình tùy chỉnh của mình:
ollama run my-vietnamese-translator
Khi bạn cung cấp một câu tiếng Anh, mô hình sẽ cố gắng dịch sang tiếng Việt dựa trên lời nhắc hệ thống. Khả năng tạo ModelFiles mở ra cánh cửa cho việc đóng gói các mô hình chuyên biệt cho từng tác vụ hoặc dự án của bạn.
Các Mô hình Phổ biến trên Ollama
Ollama hỗ trợ một danh sách ngày càng tăng các mô hình mã nguồn mở phổ biến. Dưới đây là một số cái tên đáng chú ý mà bạn có thể tìm thấy và chạy dễ dàng:
Tên Mô hình | Kích thước (Khoảng) | Yêu cầu VRAM tối thiểu (Ước tính) | Mô tả / Sử dụng phổ biến |
---|---|---|---|
Llama 3 (8B, 70B) | 4.7 GB (8B), 39 GB (70B) | 8 GB (8B), 40+ GB (70B) | Thế hệ mới nhất từ Meta. Hiệu suất cao, tốt cho suy luận, lập trình, sáng tạo. |
Mistral (7B, 7B Instruct, 8x7B) | 4.1 GB (7B), 25 GB (8x7B) | 8 GB (7B), 32+ GB (8x7B) | Mô hình mạnh mẽ, hiệu quả cao, đặc biệt là các phiên bản instruct. Tốt cho chat, tạo văn bản. |
Gemma (2B, 7B) | 1.4 GB (2B), 4.8 GB (7B) | 4 GB (2B), 8 GB (7B) | Mô hình từ Google, dựa trên nghiên cứu từ Gemini. Tốt cho các tác vụ cơ bản, phù hợp với phần cứng hạn chế. |
Phi-3 (mini, small, medium) | 1.8 GB (mini), ~4 GB (small), ~7 GB (medium) | 4 GB (mini), 8 GB (small), 12+ GB (medium) | Mô hình nhỏ gọn nhưng hiệu suất đáng kinh ngạc từ Microsoft. Tốt cho các tác vụ suy luận, lập trình trên thiết bị giới hạn. |
Code Llama | ~4 GB (7B) trở lên | 8 GB trở lên | Chuyên biệt cho các tác vụ lập trình: tạo code, giải thích code, gỡ lỗi. |
Lưu ý: Yêu cầu VRAM chỉ là ước tính và có thể thay đổi tùy thuộc vào phiên bản lượng tử hóa cụ thể của mô hình và các tùy chọn chạy. Luôn kiểm tra thông tin chi tiết trên trang Ollama hoặc mô tả của mô hình.
Yêu cầu Phần cứng
Chạy LLM cục bộ, dù đã được Ollama đơn giản hóa, vẫn đòi hỏi một lượng tài nguyên phần cứng nhất định. Yếu tố quan trọng nhất là bộ nhớ VRAM trên card đồ họa (GPU).
- Card đồ họa (GPU): Đây là thành phần quyết định tốc độ suy luận (inference speed). GPU của NVIDIA với công nghệ CUDA thường được hỗ trợ tốt nhất, nhưng Ollama cũng hỗ trợ GPU của AMD và Apple Silicon (Mac M1/M2/M3). Dung lượng VRAM cần thiết phụ thuộc trực tiếp vào kích thước của mô hình bạn muốn chạy. Mô hình 7B (7 tỷ tham số) thường cần khoảng 8 GB VRAM (cho phiên bản lượng tử hóa 4-bit). Mô hình 13B cần khoảng 14 GB VRAM, và mô hình 70B cần 40 GB VRAM trở lên.
- RAM hệ thống: Bạn cần đủ RAM để tải mô hình vào VRAM hoặc chạy một phần mô hình trên RAM nếu VRAM không đủ (điều này gọi là quantizing to RAM hoặc sử dụng CPU fallback, sẽ chậm hơn nhiều). Tối thiểu nên có 16 GB RAM, nhưng 32 GB hoặc hơn sẽ tốt hơn.
- CPU: CPU ít quan trọng hơn GPU đối với tốc độ, nhưng vẫn cần đủ mạnh để xử lý các tác vụ khác và quản lý dữ liệu.
- Ổ cứng: Các file model khá lớn, cần có đủ dung lượng trống (vài chục đến cả trăm GB) tùy thuộc vào số lượng và kích thước mô hình bạn tải.
Nếu máy tính của bạn có GPU mạnh, bạn sẽ trải nghiệm tốc độ phản hồi gần như tức thời cho các mô hình nhỏ và trung bình. Nếu chỉ có CPU hoặc GPU với ít VRAM, bạn vẫn có thể chạy được các mô hình nhỏ (như Gemma 2B, Phi-3 mini) hoặc chạy các mô hình lớn hơn nhưng với tốc độ rất chậm. Điều này giúp bạn hiểu rõ hơn về mối liên hệ giữa cửa sổ ngữ cảnh và hiệu suất phần cứng.
Ollama trong Quy trình làm việc của Kỹ sư AI
Ollama có thể đóng vai trò quan trọng trong nhiều khâu của quy trình làm việc của Kỹ sư AI:
- Phát triển và Prototype nhanh: Nhanh chóng thử nghiệm các ý tưởng ứng dụng LLM, kiểm tra các kỹ thuật viết prompt khác nhau hoặc xác thực ý tưởng sản phẩm mà không cần lo lắng về chi phí API hay kết nối mạng.
- Môi trường phát triển nội bộ: Xây dựng và chạy toàn bộ ứng dụng sử dụng LLM trong mạng nội bộ, đảm bảo quyền riêng tư cho dữ liệu phát triển và thử nghiệm.
- Chuẩn bị cho Fine-tuning: Mặc dù Ollama không trực tiếp hỗ trợ fine-tuning các mô hình (quá trình này phức tạp hơn và thường cần nhiều tài nguyên hơn), bạn có thể sử dụng Ollama để chạy và đánh giá nhanh các mô hình nền hoặc các phiên bản đã được fine-tuned sẵn có, giúp bạn chọn ra mô hình phù hợp để tiếp tục tinh chỉnh sâu hơn (liên quan đến bài Fine-Tuning với OpenAI).
- Ứng dụng Offline/Edge: Triển khai các ứng dụng LLM trên các thiết bị không có kết nối internet ổn định hoặc cần xử lý dữ liệu ngay tại nguồn (edge computing).
Khi nào nên dùng Ollama và khi nào nên dùng API Cloud?
Mặc dù Ollama rất tuyệt vời, nó không thay thế hoàn toàn các dịch vụ API LLM trên cloud. Lựa chọn phụ thuộc vào nhu cầu cụ thể:
- Dùng Ollama khi:
- Bạn muốn thử nghiệm, học hỏi và khám phá các mô hình mã nguồn mở.
- Quan tâm đến quyền riêng tư và bảo mật dữ liệu nhạy cảm.
- Muốn giảm chi phí cho việc sử dụng LLM ở quy mô thử nghiệm hoặc ứng dụng nhỏ.
- Cần khả năng làm việc ngoại tuyến.
- Có phần cứng đủ mạnh (đặc biệt là GPU) để chạy các mô hình mong muốn với tốc độ chấp nhận được.
- Muốn tùy chỉnh mô hình bằng ModelFiles.
- Dùng API Cloud (OpenAI, Claude, Gemini, etc.) khi:
- Cần chạy các mô hình độc quyền, mạnh mẽ và tiên tiến nhất chưa có phiên bản mã nguồn mở tương đương (so sánh các mô hình hàng đầu).
- Cần khả năng mở rộng (scalability) cho ứng dụng sản phẩm ở quy mô lớn, phục vụ hàng triệu người dùng.
- Không có phần cứng cục bộ đủ mạnh hoặc không muốn quản lý hạ tầng.
- Cần hiệu suất suy luận tối ưu và độ trễ thấp nhất có thể (các nhà cung cấp cloud tối ưu hóa rất tốt hạ tầng của họ).
- Muốn sử dụng các tính năng bổ sung của nền tảng cloud (ví dụ: tích hợp dữ liệu, giám sát, bảo mật cấp doanh nghiệp).
Hiểu rõ ưu nhược điểm của cả hai phương pháp giúp bạn đưa ra lựa chọn tốt nhất cho từng dự án cụ thể trong hành trình trở thành Kỹ sư AI.
Kết luận
Ollama là một công cụ đột phá, giúp dân chủ hóa việc tiếp cận và sử dụng các mô hình ngôn ngữ lớn mã nguồn mở. Bằng cách đơn giản hóa đáng kể quy trình tải xuống, cài đặt và chạy LLM cục bộ, Ollama đã loại bỏ nhiều rào cản kỹ thuật trước đây, đặc biệt là đối với các nhà phát triển mới bắt đầu khám phá lĩnh vực AI tạo sinh.
Đối với bất kỳ ai theo đuổi lộ trình Kỹ sư AI, việc làm quen với Ollama là cực kỳ quan trọng. Nó không chỉ cung cấp một nền tảng thử nghiệm và phát triển linh hoạt, tiết kiệm chi phí, mà còn giúp bạn hiểu sâu hơn về cách các mô hình này hoạt động trên phần cứng thực tế. Khả năng chạy LLM nội bộ cũng mở ra nhiều cánh cửa cho các ứng dụng chú trọng quyền riêng tư và hoạt động ngoại tuyến.
Hãy tải Ollama về máy, kéo một vài mô hình phổ biến và bắt đầu thử nghiệm ngay hôm nay! Bạn sẽ bất ngờ về những gì mình có thể làm được.
Trong các bài viết tiếp theo của series “AI Engineer Roadmap”, chúng ta sẽ tiếp tục khám phá sâu hơn các khía cạnh khác của việc xây dựng ứng dụng với LLM, bao gồm các framework phổ biến như LangChain và LlamaIndex, kỹ thuật Retrieval Augmented Generation (RAG), và cách triển khai các ứng dụng LLM hiệu quả.
Hẹn gặp lại các bạn!