Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Ollama là gì? Cách sử dụng Ollama

Minh Triết

Minh Triết

Updated on tháng 4 28, 2025

Bối cảnh của trí tuệ nhân tạo (AI) đang phát triển với tốc độ chóng mặt, và các Mô hình Ngôn ngữ Lớn (LLM) ngày càng trở nên mạnh mẽ và dễ tiếp cận hơn. Mặc dù nhiều người tương tác với các mô hình này thông qua các dịch vụ dựa trên đám mây, ngày càng có nhiều người tập trung vào việc chạy chúng trực tiếp trên máy tính cá nhân của họ. Đây là lúc Ollama xuất hiện. Ollama là một công cụ mạnh mẽ nhưng thân thiện với người dùng, được thiết kế để đơn giản hóa đáng kể quy trình phức tạp của việc tải xuống, cấu hình và chạy các LLM tiên tiến như Llama 3, Mistral, Gemma, Phi và nhiều mô hình khác ngay tại máy tính của bạn.

Hướng dẫn toàn diện này đóng vai trò là điểm khởi đầu để bạn làm chủ Ollama. Chúng ta sẽ đi từ các bước cài đặt ban đầu và tương tác cơ bản với mô hình đến các kỹ thuật tùy chỉnh nâng cao hơn, sử dụng API và khắc phục sự cố cần thiết. Cho dù bạn là nhà phát triển đang tìm cách tích hợp AI cục bộ vào ứng dụng của mình, một nhà nghiên cứu muốn thử nghiệm với các kiến trúc mô hình đa dạng, hay đơn giản là một người đam mê AI mong muốn khám phá tiềm năng chạy các mô hình mạnh mẽ ngoại tuyến, Ollama cung cấp một cổng vào được tối ưu hóa và hiệu quả đặc biệt.

💡
Bạn muốn một công cụ Kiểm tra API tuyệt vời tạo ra tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, Một cho Tất cả để nhóm Phát triển của bạn có thể làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi yêu cầu của bạn, và thay thế Postman với mức giá hợp lý hơn nhiều!
button

Tại sao chọn Ollama để Chạy LLM Cục bộ?

Trước khi đi sâu vào các chi tiết kỹ thuật, điều quan trọng là phải hiểu những lợi thế hấp dẫn của việc sử dụng Ollama để vận hành LLM cục bộ. Tại sao lại chọn phương pháp này thay vì chỉ dựa vào các API đám mây sẵn có?

  1. Quyền riêng tư và Bảo mật Vượt trội với Ollama: Khi bạn thực thi một LLM bằng Ollama trên máy của mình, mọi mẩu dữ liệu – lời nhắc của bạn, tài liệu bạn cung cấp và văn bản do mô hình tạo ra – đều hoàn toàn nằm trong hệ thống cục bộ của bạn. Nó không bao giờ rời khỏi phần cứng của bạn. Điều này đảm bảo mức độ riêng tư và kiểm soát dữ liệu cao nhất, một yếu tố quan trọng khi xử lý thông tin cá nhân nhạy cảm, dữ liệu kinh doanh bí mật hoặc nghiên cứu độc quyền.
  2. Tiết kiệm Chi phí Đáng kể thông qua Ollama: Các API LLM dựa trên đám mây thường hoạt động theo mô hình trả tiền theo mức sử dụng hoặc yêu cầu phí đăng ký liên tục. Những chi phí này có thể tích lũy nhanh chóng, đặc biệt là với việc sử dụng nhiều. Ollama loại bỏ các chi phí định kỳ này. Ngoài khoản đầu tư ban đầu vào phần cứng phù hợp (mà bạn có thể đã sở hữu), việc chạy các mô hình cục bộ về cơ bản là miễn phí, cho phép thử nghiệm và tạo ra không giới hạn mà không cần lo lắng về hóa đơn API.
  3. Khả năng Ngoại tuyến Thực sự với Ollama: Sau khi một mô hình Ollama được tải xuống bộ nhớ cục bộ của bạn, bạn có thể sử dụng nó mọi lúc, mọi nơi, hoàn toàn độc lập với kết nối internet. Quyền truy cập ngoại tuyến này là vô giá đối với các nhà phát triển làm việc trong môi trường có kết nối hạn chế, các nhà nghiên cứu tại hiện trường hoặc bất kỳ ai cần truy cập AI đáng tin cậy khi di chuyển.
  4. Tùy chỉnh Sâu và Thử nghiệm qua Modelfiles của Ollama: Ollama nổi bật với hệ thống Modelfile mạnh mẽ. Điều này cho phép người dùng dễ dàng sửa đổi hành vi của mô hình bằng cách điều chỉnh các tham số (như mức độ sáng tạo hoặc độ dài đầu ra), xác định lời nhắc hệ thống tùy chỉnh để định hình tính cách của AI, hoặc thậm chí tích hợp các bộ điều hợp (adapter) chuyên biệt đã được tinh chỉnh (LoRA). Bạn cũng có thể nhập trọng số mô hình trực tiếp từ các định dạng tiêu chuẩn như GGUF hoặc Safetensors. Mức độ kiểm soát và linh hoạt chi tiết này hiếm khi được cung cấp bởi các nhà cung cấp API đám mây mã nguồn đóng.
  5. Ưu điểm Tiềm năng về Hiệu suất với Ollama: Tùy thuộc vào cấu hình phần cứng cục bộ của bạn, đặc biệt là sự hiện diện của một Bộ xử lý Đồ họa (GPU) có khả năng, Ollama có thể cung cấp thời gian phản hồi (tốc độ suy luận) nhanh hơn đáng kể so với các dịch vụ đám mây, vốn có thể bị ảnh hưởng bởi độ trễ mạng, giới hạn tốc độ hoặc tải thay đổi trên các tài nguyên dùng chung. Việc tận dụng phần cứng chuyên dụng của bạn có thể dẫn đến trải nghiệm mượt mà và tương tác hơn nhiều.
  6. Tham gia vào Hệ sinh thái Mã nguồn mở Sôi động của Ollama: Bản thân Ollama là một dự án mã nguồn mở, thúc đẩy tính minh bạch và đóng góp của cộng đồng. Hơn nữa, nó chủ yếu đóng vai trò là cổng vào một thư viện rộng lớn và đang mở rộng nhanh chóng gồm các LLM có thể truy cập công khai. Bằng cách sử dụng Ollama, bạn trở thành một phần của hệ sinh thái năng động này, hưởng lợi từ kiến thức được chia sẻ, sự hỗ trợ của cộng đồng và sự đổi mới liên tục được thúc đẩy bởi sự hợp tác mở.

Thành tựu chính của Ollama là che giấu sự phức tạp vốn có liên quan đến việc thiết lập môi trường phần mềm cần thiết, quản lý các phụ thuộc và cấu hình các cài đặt phức tạp cần thiết để chạy các mô hình AI tinh vi này. Nó khéo léo sử dụng các công cụ suy luận backend được tối ưu hóa cao, đáng chú ý là thư viện llama.cpp nổi tiếng, để đảm bảo thực thi hiệu quả trên phần cứng tiêu dùng tiêu chuẩn, hỗ trợ cả tăng tốc CPU và GPU.

Hiểu về Ollama so với Llama.cpp

Việc làm rõ mối quan hệ giữa Ollama và llama.cpp là hữu ích, vì chúng có liên quan chặt chẽ nhưng phục vụ các mục đích khác nhau.

  • llama.cpp: Đây là thư viện C/C++ nền tảng, hiệu suất cao, chịu trách nhiệm cho nhiệm vụ cốt lõi của suy luận LLM. Nó xử lý việc tải trọng số mô hình, xử lý token đầu vào và tạo token đầu ra một cách hiệu quả, với các tối ưu hóa cho các kiến trúc phần cứng khác nhau (bộ lệnh CPU như AVX, tăng tốc GPU qua CUDA, Metal, ROCm). Đó là công cụ mạnh mẽ thực hiện công việc tính toán nặng nề.
  • Ollama: Đây là một ứng dụng toàn diện được xây dựng xung quanh llama.cpp (và có thể là các backend khác trong tương lai). Ollama cung cấp một lớp thân thiện với người dùng ở trên, cung cấp:
  • Giao diện Dòng lệnh (CLI) đơn giản để tương tác dễ dàng (ollama run, ollama pull, v.v.).
  • Một máy chủ API REST tích hợp để tích hợp theo chương trình.
  • Quản lý mô hình được sắp xếp hợp lý (tải xuống từ thư viện, lưu trữ cục bộ, cập nhật).
  • Hệ thống Modelfile để tùy chỉnh và tạo các biến thể mô hình.
  • Trình cài đặt đa nền tảng (macOS, Windows, Linux) và hình ảnh Docker.
  • Tự động phát hiện và cấu hình phần cứng (CPU/GPU).

Về bản chất, mặc dù về mặt kỹ thuật bạn có thể sử dụng llama.cpp trực tiếp bằng cách biên dịch nó và chạy các công cụ dòng lệnh của nó, nhưng điều này đòi hỏi nỗ lực kỹ thuật đáng kể hơn nhiều về thiết lập, chuyển đổi mô hình và quản lý tham số. Ollama đóng gói sức mạnh này vào một ứng dụng dễ tiếp cận, dễ sử dụng, làm cho LLM cục bộ trở nên thiết thực cho một lượng lớn người dùng hơn nhiều, đặc biệt là người mới bắt đầu. Hãy nghĩ về llama.cpp như các thành phần động cơ hiệu suất cao, và Ollama như chiếc xe được lắp ráp hoàn chỉnh, thân thiện với người dùng, sẵn sàng để lái.

Cài đặt Ollama trên Hệ thống của bạn

Ollama được thiết kế để dễ tiếp cận, cung cấp các quy trình cài đặt đơn giản cho macOS, Windows, Linux và môi trường Docker.

Yêu cầu Hệ thống Chung cho Ollama:

  • RAM (Bộ nhớ): Đây thường là yếu tố quan trọng nhất.
  • Tối thiểu 8 GB: Đủ cho các mô hình nhỏ hơn (ví dụ: tham số 1B, 3B, 7B), mặc dù hiệu suất có thể chậm.
  • Khuyến nghị 16 GB: Một điểm khởi đầu tốt để chạy các mô hình 7B và 13B một cách thoải mái.
  • Lý tưởng 32 GB trở lên: Cần thiết cho các mô hình lớn hơn (30B, 40B, 70B+) và cho phép cửa sổ ngữ cảnh lớn hơn. Nhiều RAM hơn thường dẫn đến hiệu suất tốt hơn và khả năng chạy các mô hình lớn hơn, có khả năng hơn.
  • Dung lượng Đĩa: Bản thân ứng dụng Ollama tương đối nhỏ (vài trăm MB). Tuy nhiên, các LLM bạn tải xuống yêu cầu dung lượng đáng kể. Kích thước mô hình rất khác nhau:
  • Mô hình Lượng tử hóa Nhỏ (ví dụ: ~3B Q4): ~2 GB
  • Mô hình Lượng tử hóa Trung bình (ví dụ: 7B/8B Q4): 4-5 GB
  • Mô hình Lượng tử hóa Lớn (ví dụ: 70B Q4): ~40 GB
  • Mô hình Rất Lớn (ví dụ: 405B): Hơn 200 GB!
    Đảm bảo bạn có đủ dung lượng trống trên ổ đĩa nơi Ollama lưu trữ các mô hình (xem phần bên dưới).
  • Hệ điều hành:
  • macOS: Phiên bản 11 Big Sur trở lên. Apple Silicon (M1/M2/M3/M4) được khuyến nghị để tăng tốc GPU.
  • Windows: Windows 10 phiên bản 22H2 trở lên, hoặc Windows 11. Cả hai phiên bản Home và Pro đều được hỗ trợ.
  • Linux: Một bản phân phối hiện đại (ví dụ: Ubuntu 20.04+, Fedora 38+, Debian 11+). Các yêu cầu về kernel có thể áp dụng, đặc biệt là đối với hỗ trợ GPU AMD.

Cài đặt Ollama trên macOS

  1. Tải xuống: Lấy tệp DMG ứng dụng Ollama macOS trực tiếp từ trang web chính thức của Ollama.
  2. Gắn kết: Nhấp đúp vào tệp .dmg đã tải xuống để mở nó.
  3. Cài đặt: Kéo biểu tượng Ollama.app vào thư mục Ứng dụng của bạn.
  4. Chạy: Mở ứng dụng Ollama từ thư mục Ứng dụng của bạn. Bạn có thể cần cấp quyền chạy lần đầu tiên.
  5. Dịch vụ Nền: Ollama sẽ bắt đầu chạy dưới dạng dịch vụ nền, được biểu thị bằng một biểu tượng trên thanh menu của bạn. Nhấp vào biểu tượng này sẽ cung cấp các tùy chọn để thoát ứng dụng hoặc xem nhật ký.

Khởi chạy ứng dụng sẽ tự động bắt đầu quy trình máy chủ Ollama và thêm công cụ dòng lệnh ollama vào PATH hệ thống của bạn, làm cho nó có sẵn ngay lập tức trong ứng dụng Terminal (Terminal.app, iTerm2, v.v.). Trên máy Mac được trang bị Apple Silicon (chip M1, M2, M3, M4), Ollama sử dụng liền mạch GPU tích hợp để tăng tốc thông qua API đồ họa Metal của Apple mà không cần bất kỳ cấu hình thủ công nào.

Cài đặt Ollama trên Windows

  1. Tải xuống: Lấy tệp cài đặt OllamaSetup.exe từ trang web Ollama.
  2. Chạy Trình cài đặt: Nhấp đúp vào tệp .exe đã tải xuống để khởi chạy trình hướng dẫn cài đặt. Đảm bảo bạn đáp ứng yêu cầu phiên bản Windows tối thiểu (10 22H2+ hoặc 11).
  3. Làm theo Lời nhắc: Tiến hành qua các bước cài đặt, chấp nhận thỏa thuận cấp phép và chọn vị trí cài đặt nếu muốn (mặc dù mặc định thường ổn).

Trình cài đặt cấu hình Ollama để chạy tự động dưới dạng dịch vụ nền khi hệ thống của bạn khởi động. Nó cũng thêm tệp thực thi ollama.exe vào PATH hệ thống của bạn, cho phép bạn sử dụng lệnh ollama trong các terminal Windows tiêu chuẩn như Command Prompt (cmd.exe), PowerShell hoặc Windows Terminal mới hơn. Máy chủ API Ollama khởi động tự động và lắng nghe trên http://localhost:11434.

Tăng tốc GPU Ollama cho Windows:

  • NVIDIA: Cài đặt trình điều khiển GeForce Game Ready hoặc NVIDIA Studio mới nhất từ trang web của NVIDIA. Yêu cầu phiên bản trình điều khiển 452.39 trở lên. Ollama nên tự động phát hiện và sử dụng các GPU tương thích.
  • AMD: Cài đặt trình điều khiển AMD Software: Adrenalin Edition mới nhất từ trang web hỗ trợ của AMD. Các GPU Radeon tương thích (thường là dòng RX 6000 trở lên) sẽ được sử dụng tự động.

Cài đặt Ollama trên Linux

Phương pháp thuận tiện nhất cho hầu hết các bản phân phối Linux là sử dụng tập lệnh cài đặt chính thức:

curl -fsSL https://ollama.com/install.sh | sh

Lệnh này tải xuống tập lệnh và thực thi nó bằng sh. Tập lệnh thực hiện các hành động sau:

  • Phát hiện kiến trúc hệ thống của bạn (x86_64, ARM64).
  • Tải xuống tệp nhị phân Ollama thích hợp.
  • Cài đặt tệp nhị phân vào /usr/local/bin/ollama.
  • Kiểm tra các trình điều khiển GPU cần thiết (NVIDIA CUDA, AMD ROCm) và cài đặt các phụ thuộc nếu có thể (phần này có thể khác nhau tùy theo bản phân phối).
  • Tạo người dùng và nhóm hệ thống ollama chuyên dụng.
  • Thiết lập tệp dịch vụ systemd (/etc/systemd/system/ollama.service) để quản lý quy trình máy chủ Ollama.
  • Kích hoạt và khởi động dịch vụ ollama, để nó chạy tự động khi khởi động và trong nền.

Cài đặt Thủ công Ollama trên Linux & Cấu hình Systemd:
Nếu tập lệnh không thành công hoặc nếu bạn thích kiểm soát thủ công (ví dụ: cài đặt vào một vị trí khác, quản lý người dùng khác nhau, đảm bảo các phiên bản ROCm cụ thể), hãy tham khảo hướng dẫn cài đặt Linux chi tiết trên kho lưu trữ GitHub của Ollama. Các bước chung bao gồm:

  1. Tải xuống tệp nhị phân chính xác cho kiến trúc của bạn.
  2. Làm cho tệp nhị phân có thể thực thi (chmod +x ollama) và di chuyển nó đến một vị trí trong PATH của bạn (ví dụ: /usr/local/bin).
  3. (Khuyến nghị) Tạo người dùng/nhóm hệ thống: sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollamasudo groupadd ollama, sau đó sudo usermod -a -G ollama ollama. Thêm người dùng của riêng bạn vào nhóm: sudo usermod -a -G ollama $USER.
  4. Tạo tệp dịch vụ systemd (/etc/systemd/system/ollama.service) với các cài đặt thích hợp (người dùng, nhóm, đường dẫn thực thi, biến môi trường nếu cần). Các đoạn mã ví dụ thường được cung cấp trong tài liệu.
  5. Tải lại daemon systemd: sudo systemctl daemon-reload.
  6. Kích hoạt dịch vụ để khởi động khi khởi động: sudo systemctl enable ollama.
  7. Khởi động dịch vụ ngay lập tức: sudo systemctl start ollama. Bạn có thể kiểm tra trạng thái của nó bằng sudo systemctl status ollama.

Trình điều khiển GPU Linux cần thiết cho Ollama:
Để có hiệu suất tối ưu, rất nên cài đặt trình điều khiển GPU:

  • NVIDIA: Cài đặt trình điều khiển NVIDIA độc quyền chính thức cho bản phân phối của bạn (ví dụ: thông qua trình quản lý gói như apt hoặc dnf, hoặc tải xuống từ trang web của NVIDIA). Xác minh cài đặt bằng lệnh nvidia-smi.
  • AMD (ROCm): Cài đặt bộ công cụ ROCm. AMD cung cấp kho lưu trữ chính thức và hướng dẫn cài đặt cho các bản phân phối được hỗ trợ (như Ubuntu, RHEL/CentOS, SLES). Đảm bảo phiên bản kernel của bạn tương thích. Tập lệnh cài đặt Ollama có thể xử lý một số phụ thuộc ROCm, nhưng cài đặt thủ công đảm bảo thiết lập chính xác. Xác minh bằng rocminfo.

Sử dụng Hình ảnh Docker Chính thức của Ollama

Docker cung cấp một cách độc lập với nền tảng để chạy Ollama trong một bộ chứa biệt lập, đơn giản hóa việc quản lý phụ thuộc, đặc biệt là đối với các thiết lập GPU phức tạp.

Bộ chứa Ollama Chỉ CPU:

docker run -d \
  -v ollama_data:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  --name my_ollama \
  ollama/ollama
  • -d: Chạy bộ chứa ở chế độ tách rời (nền).
  • -v ollama_data:/root/.ollama: Tạo một volume Docker được đặt tên là ollama_data trên hệ thống máy chủ của bạn và ánh xạ nó vào thư mục /root/.ollama bên trong bộ chứa. Điều này rất quan trọng để duy trì các mô hình đã tải xuống của bạn. Nếu bạn bỏ qua điều này, các mô hình sẽ bị mất khi bộ chứa bị xóa. Bạn có thể chọn bất kỳ tên nào cho volume.
  • -p 127.0.0.1:11434:11434: Ánh xạ cổng 11434 trên giao diện loopback của máy chủ (127.0.0.1) vào cổng 11434 bên trong bộ chứa. Sử dụng 0.0.0.0:11434:11434 nếu bạn cần truy cập bộ chứa Ollama từ các máy khác trên mạng của mình.
  • --name my_ollama: Gán một tên tùy chỉnh, dễ nhớ cho bộ chứa đang chạy.
  • ollama/ollama: Chỉ định hình ảnh Ollama chính thức từ Docker Hub.

Bộ chứa Ollama với GPU NVIDIA:

  • Đầu tiên, đảm bảo NVIDIA Container Toolkit được cài đặt đúng cách trên máy chủ của bạn và Docker được cấu hình để sử dụng runtime NVIDIA.
  • Chạy bộ chứa, thêm cờ --gpus=all:
docker run -d \
  --gpus=all \
  -v ollama_data:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  --name my_ollama_gpu \
  ollama/ollama

Cờ này cấp cho bộ chứa quyền truy cập vào tất cả các GPU NVIDIA tương thích được phát hiện bởi toolkit. Bạn có thể chỉ định các GPU cụ thể nếu cần (ví dụ: --gpus '"device=0,1"').

Bộ chứa Ollama với GPU AMD (ROCm):

  • Sử dụng thẻ hình ảnh cụ thể của ROCm: ollama/ollama:rocm.
  • Ánh xạ các nút thiết bị ROCm cần thiết từ máy chủ vào bộ chứa:
docker run -d \
  --device /dev/kfd \
  --device /dev/dri \
  -v ollama_data:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  --name my_ollama_rocm \
  ollama/ollama:rocm
  • /dev/kfd: Giao diện trình điều khiển hợp nhất kernel.
  • /dev/dri: Thiết bị Cơ sở hạ tầng Kết xuất Trực tiếp (thường bao gồm các nút kết xuất như /dev/dri/renderD128).
  • Đảm bảo người dùng chạy lệnh docker trên máy chủ có quyền thích hợp để truy cập các tệp thiết bị này (có thể yêu cầu thành viên trong các nhóm như rendervideo).

Sau khi bộ chứa Ollama đang chạy, bạn có thể tương tác với nó bằng lệnh docker exec để chạy các lệnh CLI ollama bên trong bộ chứa:

docker exec -it my_ollama ollama list
docker exec -it my_ollama ollama pull llama3.2
docker exec -it my_ollama ollama run llama3.2

Ngoài ra, nếu bạn đã ánh xạ cổng (-p), bạn có thể tương tác với API Ollama trực tiếp từ máy chủ của mình hoặc các ứng dụng khác trỏ đến http://localhost:11434 (hoặc IP/cổng bạn đã ánh xạ).

Ollama lưu trữ mô hình ở đâu? Hiểu về Vị trí Lưu trữ Ollama

Biết nơi Ollama lưu giữ các mô hình đã tải xuống là điều cần thiết để quản lý dung lượng đĩa và sao lưu. Vị trí mặc định thay đổi tùy theo hệ điều hành và phương pháp cài đặt:

  • Ollama trên macOS: Các mô hình nằm trong thư mục chính của người dùng tại ~/.ollama/models. ~ đại diện cho /Users/<TênNgườiDùngCủaBạn>.
  • Ollama trên Windows: Các mô hình được lưu trữ trong thư mục hồ sơ người dùng của bạn tại C:\Users\<TênNgườiDùngCủaBạn>\.ollama\models.
  • Ollama trên Linux (Cài đặt Người dùng / Thủ công): Tương tự macOS, các mô hình thường được lưu trữ trong ~/.ollama/models.
  • Ollama trên Linux (Cài đặt Dịch vụ Systemd): Khi được cài đặt thông qua tập lệnh hoặc được cấu hình dưới dạng dịch vụ toàn hệ thống chạy với tư cách người dùng ollama, các mô hình thường được lưu trữ trong /usr/share/ollama/.ollama/models. Kiểm tra cấu hình của dịch vụ hoặc tài liệu nếu bạn đã sử dụng thiết lập không chuẩn.
  • Ollama qua Docker: Bên trong bộ chứa, đường dẫn là /root/.ollama/models. Tuy nhiên, nếu bạn đã sử dụng đúng cờ -v để gắn một volume Docker (ví dụ: -v ollama_data:/root/.ollama), các tệp mô hình thực tế được lưu trữ trong khu vực volume do Docker quản lý trên máy chủ của bạn. Vị trí chính xác của các volume Docker phụ thuộc vào thiết lập Docker của bạn, nhưng chúng được thiết kế để tồn tại độc lập với bộ chứa.

Bạn có thể chuyển hướng vị trí lưu trữ mô hình bằng cách sử dụng biến môi trường OLLAMA_MODELS, chúng ta sẽ đề cập trong phần Cấu hình. Điều này hữu ích nếu ổ đĩa chính của bạn sắp hết dung lượng và bạn muốn lưu trữ các mô hình lớn trên ổ đĩa phụ hoặc ổ đĩa lớn hơn.

Các bước Đầu tiên với Ollama: Chạy một LLM

Bây giờ Ollama đã được cài đặt và máy chủ đang hoạt động (chạy qua ứng dụng máy tính để bàn, dịch vụ systemd hoặc bộ chứa Docker), bạn có thể bắt đầu tương tác với LLM bằng lệnh ollama đơn giản trong terminal của mình.

Tải xuống Mô hình Ollama: Lệnh pull

Trước khi bạn có thể chạy bất kỳ LLM cụ thể nào, trước tiên bạn phải tải xuống trọng số và tệp cấu hình của nó. Ollama cung cấp một thư viện tuyển chọn các mô hình mở phổ biến, dễ dàng truy cập thông qua lệnh ollama pull. Bạn có thể duyệt các mô hình có sẵn trên trang thư viện của trang web Ollama.

# Ví dụ 1: Lấy mô hình Llama 3.2 8B Instruct mới nhất
# Thường được gắn thẻ là 'latest' hoặc đơn giản bằng tên cơ sở.
ollama pull llama3.2

# Ví dụ 2: Lấy một phiên bản cụ thể của Mistral (7 tỷ tham số, mô hình cơ sở)
ollama pull mistral:7b

# Ví dụ 3: Lấy mô hình Gemma 3 4B của Google
ollama pull gemma3

# Ví dụ 4: Lấy mô hình Phi-4 Mini nhỏ hơn của Microsoft (hiệu quả)
ollama pull phi4-mini

# Ví dụ 5: Lấy một mô hình thị giác (có thể xử lý hình ảnh)
ollama pull llava

Hiểu về Thẻ Mô hình Ollama:
Các mô hình trong thư viện Ollama sử dụng quy ước đặt tên tên_họ_mô_hình:thẻ. Thẻ chỉ định các biến thể như:

  • Kích thước: 1b, 3b, 7b, 8b, 13b, 34b, 70b, 405b (chỉ hàng tỷ tham số). Các mô hình lớn hơn thường có nhiều kiến thức hơn nhưng yêu cầu nhiều tài nguyên hơn.
  • Lượng tử hóa: q2_K, q3_K_S, q4_0, q4_K_M, q5_1, q5_K_M, q6_K, q8_0, f16 (float16), f32 (float32). Lượng tử hóa làm giảm kích thước mô hình và yêu cầu tính toán, thường đi kèm với sự đánh đổi nhỏ về độ chính xác. Các số nhỏ hơn (ví dụ: q4) có nghĩa là nén nhiều hơn. Các biến thể K (_K_S, _K_M, _K_L) thường được coi là sự cân bằng tốt giữa kích thước và chất lượng. f16/f32 không được lượng tử hóa hoặc được nén tối thiểu, cung cấp độ trung thực cao nhất nhưng yêu cầu nhiều tài nguyên nhất.
  • Biến thể: instruct (được điều chỉnh để tuân theo hướng dẫn), chat (được điều chỉnh cho cuộc trò chuyện), code (được tối ưu hóa cho các tác vụ lập trình), vision (đa phương thức, xử lý hình ảnh), uncensored (ít bộ lọc an toàn hơn, sử dụng có trách nhiệm).
  • latest: Nếu bạn bỏ qua thẻ (ví dụ: ollama pull llama3.2), Ollama thường mặc định là thẻ latest, thường trỏ đến một phiên bản được sử dụng phổ biến, cân bằng tốt (thường là mô hình có kích thước trung bình, được lượng tử hóa, được điều chỉnh theo hướng dẫn).

Lệnh pull tải xuống các tệp cần thiết (có thể lên tới vài gigabyte) vào thư mục mô hình Ollama được chỉ định của bạn. Bạn chỉ cần lấy một tổ hợp mô_hình:thẻ cụ thể một lần. Ollama cũng có thể cập nhật các mô hình; chạy lại pull trên một mô hình hiện có sẽ chỉ tải xuống các lớp đã thay đổi (khác biệt), giúp cập nhật hiệu quả.

Trò chuyện Tương tác với Mô hình Ollama: Lệnh run

Cách trực tiếp nhất để trò chuyện với một mô hình đã tải xuống là sử dụng lệnh ollama run:

ollama run llama3.2

Nếu mô hình được chỉ định (llama3.2:latest trong trường hợp này) chưa được lấy về, ollama run sẽ thuận tiện kích hoạt ollama pull trước. Khi mô hình sẵn sàng và được tải vào bộ nhớ (có thể mất vài giây, đặc biệt đối với các mô hình lớn hơn), bạn sẽ thấy một lời nhắc tương tác:

>>> Gửi tin nhắn (/? để được trợ giúp)

Bây giờ, bạn chỉ cần nhập câu hỏi hoặc hướng dẫn của mình, nhấn Enter và đợi AI tạo phản hồi. Đầu ra thường được truyền trực tuyến theo từng token, mang lại cảm giác phản hồi nhanh.

>>> Giải thích khái niệm vướng víu lượng tử bằng thuật ngữ đơn giản.
Được rồi, hãy tưởng tượng bạn có hai đồng xu đặc biệt được liên kết với nhau một cách kỳ diệu. Hãy gọi chúng là Đồng xu A và Đồng xu B. Trước khi bạn nhìn vào chúng, không có đồng xu nào là mặt ngửa hay mặt sấp – chúng ở trong một hỗn hợp mờ ảo của cả hai khả năng.

Bây giờ, bạn đưa Đồng xu A cho một người bạn và đi xa hàng năm ánh sáng với Đồng xu B. Ngay khi bạn nhìn vào Đồng xu B của mình và thấy nó, chẳng hạn, là mặt ngửa, bạn ngay lập tức biết *chắc chắn* rằng Đồng xu A của bạn bè bạn là mặt sấp. Và nếu bạn thấy mặt sấp, bạn sẽ biết của họ là mặt ngửa.

Điều đó hơi giống như vướng víu lượng tử! Hai hạt (như đồng xu của chúng ta) trở nên liên kết, và các thuộc tính của chúng (như mặt ngửa/mặt sấp) vẫn tương quan cho dù chúng cách xa nhau bao nhiêu. Việc đo một hạt ngay lập tức ảnh hưởng đến thuộc tính của hạt kia, nhanh hơn tốc độ ánh sáng có thể di chuyển giữa chúng. Đó là một trong những phần kỳ lạ và thú vị nhất của vật lý lượng tử!

>>> Gửi tin nhắn (/? để được trợ giúp)

Các Lệnh Hữu ích trong Chế độ Tương tác của Ollama:
Trong khi tương tác với một mô hình qua ollama run, bạn có thể sử dụng các lệnh đặc biệt có tiền tố /:

  • /?: Hiển thị menu trợ giúp liệt kê tất cả các lệnh gạch chéo có sẵn.
  • /set parameter <tên_tham_số> <giá_trị>: Tạm thời sửa đổi một tham số thời gian chạy của mô hình cho phiên trò chuyện hiện tại. Ví dụ, /set parameter temperature 0.9 tăng tính sáng tạo, trong khi /set parameter num_ctx 8192 tăng cửa sổ ngữ cảnh cho phiên này.
  • /show info: In thông tin chi tiết về mô hình hiện đang được tải, bao gồm các tham số, cấu trúc template và giấy phép của nó.
  • /show modelfile: Hiển thị nội dung của Modelfile đã được sử dụng để tạo mô hình hiện đang chạy. Điều này hữu ích để hiểu mô hình cơ sở, các tham số và template lời nhắc của nó.
  • /save <tên_phiên>: Lưu lịch sử trò chuyện hiện tại vào một tệp phiên được đặt tên.
  • /load <tên_phiên>: Tải một phiên trò chuyện đã lưu trước đó, khôi phục lịch sử cuộc trò chuyện.
  • /bye hoặc /exit: Thoát khỏi phiên trò chuyện tương tác một cách nhẹ nhàng và dỡ bỏ mô hình khỏi bộ nhớ (nếu không có phiên nào khác đang sử dụng nó). Bạn cũng thường có thể thoát bằng Ctrl+D.

Quản lý Mô hình Ollama Cục bộ của bạn

Khi bạn tải xuống và tạo các mô hình, bạn sẽ cần các cách để quản lý chúng:

Liệt kê Mô hình Ollama Đã tải xuống: Để xem tất cả các mô hình hiện đang được lưu trữ cục bộ, hãy sử dụng:

ollama list

Lệnh này xuất ra một bảng hiển thị tên mô hình (NAME), ID duy nhất, kích thước trên đĩa (SIZE) và thời gian sửa đổi (MODIFIED).

Hiển thị Thông tin Chi tiết về Mô hình Ollama: Để kiểm tra chi tiết của một mô hình cụ thể (các tham số, lời nhắc hệ thống, template, giấy phép, v.v.), hãy sử dụng:

ollama show llama3.2:8b-instruct-q5_K_M

Thao tác này sẽ in nội dung Modelfile, cài đặt tham số, chi tiết template và siêu dữ liệu khác được liên kết với thẻ mô hình cụ thể đó.

Xóa Mô hình Ollama: Nếu bạn không còn cần một mô hình và muốn giải phóng dung lượng đĩa, hãy sử dụng:

ollama rm mistral:7b

Thao tác này sẽ xóa vĩnh viễn tổ hợp mô_hình:thẻ được chỉ định khỏi bộ nhớ của bạn. Sử dụng cẩn thận!

Sao chép/Đổi tên Mô hình Ollama: Để tạo bản sao của một mô hình hiện có, có lẽ là điểm khởi đầu để tùy chỉnh hoặc đơn giản là đặt cho nó một tên khác, hãy sử dụng:

ollama cp llama3.2 thiết_lập_llama3.2_tùy_chỉnh_của_tôi

Thao tác này tạo một mục nhập mô hình mới có tên thiết_lập_llama3.2_tùy_chỉnh_của_tôi dựa trên llama3.2 gốc.

Kiểm tra Mô hình Ollama Hiện đang được tải: Để xem những mô hình nào hiện đang được tải vào RAM hoặc VRAM của bạn và sẵn sàng cho suy luận ngay lập tức, hãy sử dụng:

ollama ps

Lệnh này hiển thị tên mô hình, ID, kích thước, bộ xử lý được sử dụng (CPU/GPU) và thời gian truy cập lần cuối. Các mô hình thường vẫn được tải trong một khoảng thời gian ngắn sau khi sử dụng (ví dụ: 5 phút) để tăng tốc các yêu cầu tiếp theo, sau đó tự động dỡ bỏ để giải phóng tài nguyên.

Mô hình Ollama tốt nhất là gì? Chọn LLM phù hợp

Đây là một câu hỏi thường gặp và quan trọng, nhưng câu trả lời rất tinh tế. Không có một mô hình Ollama "tốt nhất" duy nhất cho mọi người hoặc mọi tác vụ. Lựa chọn tối ưu phụ thuộc vào một số yếu tố:

  • Tác vụ Cụ thể của bạn: Bạn chủ yếu muốn AI làm gì?
  • Trò chuyện/Hỗ trợ Chung: llama3.2, llama3.1, mistral, gemma3, qwq là những ứng cử viên mạnh mẽ.
  • Mã hóa/Lập trình: codellama, phi4, phi4-mini, starcoder2, deepseek-coder được điều chỉnh đặc biệt cho việc tạo mã, giải thích và gỡ lỗi.
  • Viết Sáng tạo: Các mô hình có nhiệt độ mặc định cao hơn hoặc số lượng tham số lớn hơn (như mô hình 70B) có thể mang lại kết quả giàu trí tưởng tượng hơn. Thử nghiệm là chìa khóa.
  • Tóm tắt/Phân tích: Các mô hình được điều chỉnh theo hướng dẫn (thẻ :instruct) thường vượt trội ở đây.
  • Đa phương thức (Đầu vào Hình ảnh): llava, moondream, llama3.2-vision.
  • Tài nguyên Phần cứng của bạn (RAM và VRAM): Đây là một hạn chế lớn.
  • Tài nguyên Thấp (8GB RAM, Không có/GPU yếu): Bám sát các mô hình nhỏ hơn (tham số 1B-3B) hoặc các phiên bản được lượng tử hóa mạnh (ví dụ: q2_K, q3_K_S) của các mô hình 7B. Hiệu suất sẽ chậm hơn. Ví dụ: gemma3:1b, llama3.2:1b, phi4-mini:q4_0.
  • Tài nguyên Tầm trung (16GB RAM, GPU cơ bản): Bạn có thể chạy thoải mái các mô hình 7B/8B (ví dụ: llama3.2, mistral, gemma3) với lượng tử hóa tốt (q4_K_M, q5_K_M). Bạn có thể chạy các mô hình 13B (q4_0) một cách chậm chạp.
  • Tài nguyên Cao cấp (32GB+ RAM, GPU mạnh với 12GB+ VRAM): Bạn có thể chạy các mô hình lớn hơn như 13B, 30B hoặc thậm chí 70B (lượng tử hóa q4_K_M hoặc tốt hơn như q5_K_M, q6_K). Chúng cung cấp khả năng suy luận và kiến thức tốt hơn đáng kể. Ví dụ: llama3.3, llama3.1:405b (yêu cầu tài nguyên khổng lồ), gemma3:27b, deepseek-r1:671b (yêu cầu cực đoan).
  • Sự đánh đổi Chất lượng mong muốn so với Tốc độ:
  • Chất lượng Cao hơn: Số lượng tham số lớn hơn và lượng tử hóa ít tích cực hơn (ví dụ: q6_K, q8_0, f16) thường cung cấp kết quả tốt hơn nhưng chậm hơn và yêu cầu nhiều tài nguyên hơn.
  • Tốc độ Nhanh hơn/Sử dụng Tài nguyên Thấp hơn: Số lượng tham số nhỏ hơn và lượng tử hóa tích cực hơn (ví dụ: q4_0, q4_K_M, q3_K_M) nhanh hơn và nhẹ hơn nhưng có thể thể hiện sự mạch lạc hoặc độ chính xác giảm nhẹ. Các lượng tử hóa K (_K_M, _K_S) thường cung cấp sự cân bằng tốt nhất.
  • Tinh chỉnh và Căn chỉnh Mô hình: Một số mô hình là mô hình cơ sở, trong khi những mô hình khác được điều chỉnh theo hướng dẫn (instruct) hoặc điều chỉnh theo trò chuyện (chat). Các mô hình Instruct/chat thường giỏi hơn trong việc tuân theo chỉ dẫn và tham gia vào cuộc trò chuyện. Các mô hình không bị kiểm duyệt có ít lan can an toàn hơn.

Khuyến nghị cho Người mới bắt đầu (Cuối năm 2024):

  • Toàn diện Tốt (Phần cứng Tầm trung): llama3.2:8b-instruct-q5_K_M hoặc mistral:7b-instruct-v0.2-q5_K_M. Chúng cung cấp sự cân bằng tuyệt vời về khả năng, tốc độ và sử dụng tài nguyên.
  • Lựa chọn Hiệu quả (Phần cứng Cấp thấp): phi4-mini:q4_K_M hoặc gemma3:1b. Có khả năng đáng ngạc nhiên so với kích thước của chúng.
  • Tập trung vào Mã hóa: codellama:7b-instruct-q5_K_M.
  • Nhu cầu về Thị giác: llava:13b (nếu tài nguyên cho phép) hoặc moondream.

Cách tiếp cận tốt nhất là thực nghiệm: Đọc mô tả mô hình trên thư viện Ollama, xem xét phần cứng của bạn, tải xuống một vài ứng cử viên có khả năng bằng cách sử dụng ollama pull, kiểm tra chúng với các lời nhắc điển hình của bạn bằng cách sử dụng ollama run và xem cái nào hoạt động tốt nhất cho bạn. Đừng ngần ngại sử dụng ollama rm đối với các mô hình không đáp ứng nhu cầu của bạn để tiết kiệm dung lượng.

Làm sáng tỏ các Khái niệm Mô hình Ollama

Để sử dụng và tùy chỉnh Ollama một cách hiệu quả, việc hiểu một số khái niệm LLM cốt lõi sẽ hữu ích.

Giải thích các Tham số Mô hình Ollama

LLM có các cài đặt nội bộ hoặc tham số mà bạn có thể điều chỉnh để ảnh hưởng đến cách chúng tạo ra văn bản. Ollama cho phép bạn kiểm soát nhiều tham số trong số này:

  • temperature: (Mặc định: ~0.7-0.8) Kiểm soát tính ngẫu nhiên hoặc "sáng tạo" của đầu ra.
  • Giá trị thấp hơn (ví dụ: 0.2): Làm cho đầu ra xác định hơn, tập trung và dễ dự đoán hơn. Tốt cho các câu trả lời thực tế hoặc tạo mã.
  • Giá trị cao hơn (ví dụ: 1.0, 1.2): Tăng tính ngẫu nhiên, làm cho đầu ra đa dạng và sáng tạo hơn, nhưng có khả năng kém mạch lạc hơn. Tốt cho việc động não hoặc viết truyện.
  • top_p (Lấy mẫu Hạt nhân): (Mặc định: ~0.9) Đặt ngưỡng xác suất. Mô hình chỉ xem xét các token tiếp theo có khả năng xảy ra nhất mà khối lượng xác suất tích lũy của chúng vượt quá top_p. Việc giảm top_p (ví dụ: 0.5) giới hạn các lựa chọn vào các từ có khả năng xảy ra cao hơn, tăng tính mạch lạc nhưng có khả năng giảm tính mới lạ. Giá trị cao hơn cho phép các lựa chọn đa dạng hơn.
  • top_k: (Mặc định: ~40) Giới hạn các lựa chọn của mô hình vào k token tiếp theo có khả năng xảy ra nhất. top_k thấp hơn (ví dụ: 10) làm cho đầu ra tập trung hơn; top_k cao hơn cho phép đa dạng hơn. top_p thường được coi là hiệu quả hơn top_k. Thông thường, bạn đặt một trong hai, không phải cả hai đều thấp.
  • num_predict: (Mặc định: ~128, -1 cho vô hạn) Số lượng token tối đa (khoảng từ/từ phụ) mà mô hình sẽ tạo ra trong một phản hồi duy nhất. Đặt thành -1 để tạo không giới hạn cho đến khi gặp điều kiện dừng.
  • stop: Danh sách các chuỗi văn bản cụ thể. Nếu mô hình tạo ra một trong các chuỗi này, nó sẽ ngay lập tức ngừng tạo thêm đầu ra. Hữu ích để ngăn chặn các câu chạy dài hoặc đảm bảo mô hình dừng lại sau khi trả lời. Ví dụ: ["\n", "User:", "<|eot_id|>"].
  • num_ctx: Xác định kích thước cửa sổ ngữ cảnh của mô hình. Xem giải thích chi tiết bên dưới.
  • Các tham số khác: Ollama hiển thị nhiều tham số khác được kế thừa từ llama.cpp (như repeat_penalty, seed, mirostat, lớp GPU num_gpu, v.v.) để kiểm soát chi tiết. Tham khảo tài liệu Ollama và llama.cpp để biết chi tiết.

Bạn có thể đặt các tham số này tạm thời bằng cách sử dụng /set parameter trong ollama run, vĩnh viễn trong Modelfile bằng cách sử dụng lệnh PARAMETER, hoặc theo yêu cầu thông qua đối tượng options trong API Ollama.

Độ dài Ngữ cảnh Ollama: Tham số num_ctx

Độ dài ngữ cảnh, thường được gọi là cửa sổ ngữ cảnh hoặc num_ctx trong cài đặt Ollama và llama.cpp, là một trong những hạn chế kiến trúc quan trọng nhất của một LLM.

  • Nó đại diện cho điều gì: num_ctx xác định số lượng token tối đa mà mô hình có thể "nhìn thấy" hoặc xử lý đồng thời. Điều này bao gồm mọi thứ: lời nhắc hệ thống ban đầu, tất cả các tin nhắn người dùng trước đó và phản hồi của trợ lý trong lịch sử trò chuyện hiện tại, và lời nhắc đầu vào mới nhất của người dùng.
  • Tại sao nó quan trọng: Khả năng của mô hình tạo ra các phản hồi phù hợp, mạch lạc và phù hợp với ngữ cảnh phụ thuộc rất nhiều vào cửa sổ ngữ cảnh của nó.
  • Cuộc trò chuyện dài: Cửa sổ ngữ cảnh lớn hơn cho phép mô hình "ghi nhớ" thông tin từ phần trước của cuộc trò chuyện, ngăn không cho nó mất dấu hoặc lặp lại chính nó.
  • Phân tích Tài liệu: Khi xử lý các tài liệu lớn (ví dụ: để tóm tắt hoặc trả lời câu hỏi), cửa sổ ngữ cảnh xác định lượng tài liệu mà mô hình có thể xem xét cùng một lúc.
  • Hướng dẫn Phức tạp: Các hướng dẫn dựa vào chi tiết được cung cấp sớm hơn nhiều trong lời nhắc yêu cầu một cửa sổ ngữ cảnh đủ để được hiểu chính xác.
  • Giới hạn Mô hình Vốn có: Mọi LLM đều được đào tạo trước với độ dài ngữ cảnh tối đa cụ thể (ví dụ: 2048, 4096, 8192, 32k, 128k, hoặc thậm chí hàng triệu đối với các mô hình nghiên cứu tiên tiến). Mặc dù bạn có thể đặt num_ctx trong Ollama, nhưng đặt nó cao hơn giới hạn đào tạo ban đầu của mô hình có thể dẫn đến hành vi không thể đoán trước, hiệu suất suy giảm (mô hình có thể "quên" những thứ bên ngoài cửa sổ được đào tạo của nó) hoặc lỗi. Đặt nó thấp hơn luôn an toàn nhưng giới hạn khả năng của mô hình.
  • Tiêu thụ Tài nguyên: Việc xử lý một cửa sổ ngữ cảnh lớn hơn yêu cầu nhiều RAM và VRAM (bộ nhớ GPU) hơn đáng kể và mất nhiều thời gian tính toán hơn. Bạn cần cân bằng khả năng ngữ cảnh mong muốn với các hạn chế phần cứng của mình.
  • Tìm num_ctx mặc định cho Mô hình Ollama: Sử dụng lệnh ollama show <tên_mô_hình:thẻ> và tìm dòng PARAMETER num_ctx trong phần Modelfile được hiển thị. Các mô hình Ollama thường đi kèm với một giá trị mặc định hợp lý (ví dụ: 4096 hoặc 8192).
  • Thay đổi num_ctx cho Ollama:
  • Tạm thời (trong ollama run): Sử dụng lệnh gạch chéo: /set parameter num_ctx 8192
  • Theo Yêu cầu API: Bao gồm nó trong đối tượng JSON options: curl ... -d '{ "model": "...", "prompt": "...", "options": { "num_ctx": 8192 } }'
  • Vĩnh viễn (Mô hình Ollama Tùy chỉnh): Tạo hoặc sửa đổi Modelfile và thêm hoặc thay đổi dòng PARAMETER num_ctx <giá_trị>, sau đó xây dựng mô hình bằng ollama create. Thao tác này đặt kích thước ngữ cảnh mặc định cho mô hình tùy chỉnh đó.

Chọn giá trị num_ctx phù hợp với các tác vụ điển hình của bạn. Đối với Q&A đơn giản, một cửa sổ nhỏ hơn (ví dụ: 4096) có thể đủ. Đối với các cuộc trò chuyện dài hoặc tóm tắt tài liệu lớn, bạn sẽ được hưởng lợi từ cửa sổ ngữ cảnh lớn nhất mà phần cứng của bạn và mô hình có thể hỗ trợ một cách hợp lý (ví dụ: 8192, 16384 hoặc nhiều hơn nếu có).

Ollama Nâng cao: Khai thác API và Tùy chỉnh

Trong khi CLI ollama cung cấp tương tác trực tiếp dễ dàng, tiềm năng thực sự để tích hợp Ollama vào quy trình làm việc và ứng dụng nằm ở API REST tích hợp và hệ thống tùy chỉnh Modelfile.

Tương tác theo Chương trình với API Ollama

Theo mặc định, quy trình máy chủ Ollama (cho dù chạy qua ứng dụng máy tính để bàn, systemd hay Docker) lắng nghe các yêu cầu HTTP đến trên cổng 11434 của máy cục bộ của bạn (http://localhost:11434 hoặc http://127.0.0.1:11434). API này cho phép các chương trình, tập lệnh hoặc giao diện web khác chạy trên cùng một máy (hoặc các máy khác trên mạng, nếu được cấu hình) tương tác với các mô hình Ollama theo chương trình.

Các điểm cuối API Ollama chính:

  • POST /api/generate: Được sử dụng để tạo các phần hoàn thành văn bản dựa trên một lời nhắc đơn, không mang tính hội thoại. Phù hợp cho các tác vụ như mở rộng văn bản, dịch đơn giản hoặc các đoạn mã nhanh. Yêu cầu phần thân JSON với modelprompt.
  • POST /api/chat: Được thiết kế cho các tương tác hội thoại. Nó chấp nhận một danh sách các tin nhắn, mỗi tin nhắn có role (system, user hoặc assistant) và content. Điều này cho phép mô hình duy trì ngữ cảnh qua nhiều lượt. Yêu cầu phần thân JSON với modelmessages.
  • POST /api/embeddings: Tạo các biểu diễn vectơ số (embeddings) cho văn bản đầu vào. Các vectơ này nắm bắt ý nghĩa ngữ nghĩa và là nền tảng cho các tác vụ như Tạo Sinh Tăng cường Truy xuất (RAG), tìm kiếm ngữ nghĩa, phân loại văn bản và phân cụm. Yêu cầu phần thân JSON với modelprompt.
  • GET /api/tags: Truy xuất danh sách tất cả các mô hình hiện có trong bộ nhớ Ollama cục bộ của bạn (tương đương với ollama list). Trả về một mảng JSON gồm các đối tượng mô hình.
  • POST /api/show: Lấy thông tin chi tiết về một mô hình cục bộ cụ thể, bao gồm các tham số, template, giấy phép, v.v. (tương đương với ollama show). Yêu cầu phần thân JSON với name (mô hình:thẻ).
  • DELETE /api/delete: Xóa một mô hình được chỉ định khỏi bộ nhớ cục bộ (tương đương với ollama rm). Yêu cầu phần thân JSON với name (mô hình:thẻ).
  • POST /api/pull: Bắt đầu tải xuống một mô hình từ thư viện Ollama (tương đương với ollama pull). Yêu cầu phần thân JSON với name (mô hình:thẻ). Cũng có thể truyền trực tuyến thông tin tiến trình.
  • POST /api/create: Tạo một mô hình tùy chỉnh mới dựa trên nội dung Modelfile được cung cấp (tương đương với ollama create -f). Yêu cầu phần thân JSON với name (tên mô hình mới) và modelfile (nội dung của Modelfile dưới dạng chuỗi).
  • POST /api/copy: Sao chép một mô hình cục bộ hiện có dưới một tên mới (tương đương với ollama cp). Yêu cầu phần thân JSON với sourcedestination.
  • POST /api/push: Tải lên một mô hình cục bộ tùy chỉnh vào tài khoản của bạn trên sổ đăng ký ollama.com (yêu cầu đăng nhập/thiết lập trước). Yêu cầu phần thân JSON với name (tên mô hình có không gian tên).

Định dạng Yêu cầu/Phản hồi API:
Hầu hết các yêu cầu POSTDELETE đều mong đợi một tải trọng JSON trong phần thân yêu cầu. Phản hồi thường được trả về dưới dạng đối tượng JSON. Đối với các điểm cuối generatechat, bạn có thể kiểm soát định dạng phản hồi:

  • "stream": false (Mặc định): API đợi cho đến khi toàn bộ phản hồi được tạo và trả về dưới dạng một đối tượng JSON duy nhất chứa văn bản đầy đủ, chi tiết hoàn thành và thống kê hiệu suất.
  • "stream": true: API trả về một luồng các đối tượng JSON, một đối tượng cho mỗi token được tạo (hoặc một đoạn nhỏ của token). Điều này cho phép các ứng dụng hiển thị phản hồi một cách tăng dần, mang lại trải nghiệm người dùng tương tác hơn. Đối tượng JSON cuối cùng trong luồng chứa các thống kê tổng thể.

Ví dụ về Tương tác API bằng curl:

1. Yêu cầu Tạo Sinh Đơn giản (Không Truyền trực tuyến):

curl http://localhost:11434/api/generate -d '{
  "model": "phi4-mini",
  "prompt": "Viết một hàm Python ngắn để tính giai thừa:",
  "stream": false,
  "options": {
    "temperature": 0.3,
    "num_predict": 80
  }
}'

2. Yêu cầu Trò chuyện Hội thoại (Truyền trực tuyến):

# Lưu ý: Đầu ra truyền trực tuyến sẽ xuất hiện dưới dạng nhiều dòng JSON
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2:8b-instruct-q5_K_M",
  "messages": [
    { "role": "system", "content": "Bạn là một nhà sử học hiểu biết." },
    { "role": "user", "content": "Nguyên nhân chính của Thế chiến I là gì?" }
  ],
  "stream": true,
  "options": {
    "num_ctx": 4096
  }
}'

3. Yêu cầu Tạo Sinh Embedding:

curl http://localhost:11434/api/embeddings -d '{
  "model": "mxbai-embed-large",  # Hoặc một mô hình embedding phù hợp khác
  "prompt": "Ollama giúp chạy LLM cục bộ dễ dàng."
}'

API linh hoạt này tạo thành xương sống cho vô số tích hợp cộng đồng, bao gồm giao diện người dùng web, công cụ phát triển, dịch vụ backend, tập lệnh tự động hóa và hơn thế nữa, tất cả đều được cung cấp bởi phiên bản Ollama cục bộ của bạn.

Tận dụng API Tương thích OpenAI của Ollama

Nhận thấy sự chấp nhận rộng rãi của các tiêu chuẩn API của OpenAI, Ollama đã cẩn thận đưa vào một lớp tương thích thử nghiệm. Điều này cho phép nhiều công cụ, thư viện và ứng dụng được thiết kế cho các dịch vụ của OpenAI hoạt động với phiên bản Ollama cục bộ của bạn với các sửa đổi tối thiểu, thường là không đáng kể.

Cách hoạt động:
Máy chủ Ollama hiển thị các điểm cuối dưới đường dẫn /v1/ (ví dụ: http://localhost:11434/v1/) phản ánh cấu trúc và định dạng yêu cầu/phản hồi dự kiến của các điểm cuối API OpenAI chính.

Các điểm cuối Tương thích Chính:

  • /v1/chat/completions: Phản ánh điểm cuối hoàn thành trò chuyện của OpenAI.
  • /v1/embeddings: Phản ánh điểm cuối embeddings của OpenAI.
  • /v1/models: Phản ánh điểm cuối liệt kê mô hình của OpenAI (trả về các mô hình Ollama cục bộ của bạn).

Sử dụng Thư viện Máy khách OpenAI với Ollama:
Ưu điểm chính là bạn có thể sử dụng các thư viện máy khách OpenAI tiêu chuẩn (như openai-python, openai-node, v.v.) bằng cách chỉ cần thay đổi hai tham số cấu hình khi khởi tạo máy khách:

  1. base_url (hoặc api_base): Đặt tham số này thành điểm cuối Ollama v1 cục bộ của bạn: http://localhost:11434/v1/.
  2. api_key: Cung cấp bất kỳ chuỗi không trống nào. Điểm cuối /v1/ của Ollama thực sự không thực hiện xác thực và bỏ qua giá trị khóa, nhưng hầu hết các thư viện máy khách OpenAI đều yêu cầu tham số phải có mặt. Thông lệ phổ biến là sử dụng chuỗi "ollama" hoặc "nokey".

Ví dụ Python sử dụng openai-python:

# Đảm bảo bạn đã cài đặt thư viện openai: pip install openai
from openai import OpenAI
import os

# Xác định điểm cuối Ollama và khóa API giả
OLLAMA_BASE_URL = "http://localhost:11434/v1"
OLLAMA_API_KEY = "ollama" # Placeholder, giá trị bị Ollama bỏ qua

# Chỉ định mô hình Ollama cục bộ bạn muốn sử dụng
OLLAMA_MODEL = "llama3.2"

try:
    # Khởi tạo máy khách OpenAI, trỏ nó đến máy chủ Ollama
    client = OpenAI(
        base_url=OLLAMA_BASE_URL,
        api_key=OLLAMA_API_KEY,
    )

    print(f"Đang gửi yêu cầu đến mô hình Ollama: {OLLAMA_MODEL} qua lớp tương thích OpenAI...")

    # Thực hiện yêu cầu hoàn thành trò chuyện tiêu chuẩn
    chat_completion = client.chat.completions.create(
        model=OLLAMA_MODEL, # Sử dụng tên mô hình Ollama cục bộ của bạn
        messages=[
            {"role": "system", "content": "Bạn là một trợ lý hữu ích."},
            {"role": "user", "content": "Giải thích sự khác biệt giữa Ollama và llama.cpp."}
        ],
        temperature=0.7,
        max_tokens=250, # Lưu ý: 'max_tokens' gần tương ứng với 'num_predict' của Ollama
        stream=False # Đặt thành True để có phản hồi trực tuyến
    )

    # Xử lý phản hồi
    if chat_completion.choices:
        response_content = chat_completion.choices[0].message.content
        print("\nPhản hồi Ollama:")
        print(response_content)
        print("\nThống kê Sử dụng:")
        print(f"  Token Lời nhắc: {chat_completion.usage.prompt_tokens}")
        print(f"  Token Hoàn thành: {chat_completion.usage.completion_tokens}")
        print(f"  Tổng số Token: {chat_completion.usage.total_tokens}")
    else:
        print("Không nhận được lựa chọn phản hồi nào từ Ollama.")

except Exception as e:
    print(f"\nĐã xảy ra lỗi:")
    print(f"  Loại Lỗi: {type(e).__name__}")
    print(f"  Chi tiết Lỗi: {e}")
    print(f"\nVui lòng đảm bảo máy chủ Ollama đang chạy và có thể truy cập tại {OLLAMA_BASE_URL}.")
    print(f"Đồng thời xác minh mô hình '{OLLAMA_MODEL}' có sẵn cục bộ ('ollama list').")

Sự tương thích này đơn giản hóa đáng kể việc di chuyển các dự án dựa trên OpenAI hiện có sang sử dụng các mô hình cục bộ thông qua Ollama hoặc xây dựng các ứng dụng mới có thể chuyển đổi linh hoạt giữa các backend đám mây và cục bộ. Mặc dù không phải tất cả các tính năng OpenAI khó hiểu đều có thể được phản ánh hoàn hảo, nhưng các chức năng cốt lõi về trò chuyện, embedding và liệt kê mô hình đều được hỗ trợ tốt.

Tùy chỉnh Sâu Ollama với Modelfiles

Modelfile là nền tảng của khả năng tùy chỉnh của Ollama. Nó hoạt động như một bản thiết kế hoặc công thức, xác định chính xác cách một mô hình Ollama nên được xây dựng hoặc sửa đổi. Bằng cách tạo và chỉnh sửa các tệp văn bản đơn giản này, bạn có được quyền kiểm soát chi tiết đối với hành vi, tham số và cấu trúc của mô hình.

Các Lệnh Modelfile Ollama Chính:

  • FROM <tham_chiếu_mô_hình_cơ_sở>: (Lệnh Đầu tiên Bắt buộc) Chỉ định nền tảng mà mô hình mới của bạn được xây dựng trên đó. Tham chiếu có thể trỏ đến:
  • Một mô hình hiện có trong thư viện Ollama cục bộ của bạn hoặc sổ đăng ký chính thức (ví dụ: FROM llama3.2:8b-instruct-q5_K_M).
  • Đường dẫn tương đối hoặc tuyệt đối đến một thư mục cục bộ chứa trọng số mô hình chưa được nén ở định dạng Safetensors, cùng với các tệp cấu hình cần thiết (config.json, tokenizer.json, v.v.). Ví dụ: FROM /mnt/models/my_downloaded_llama/. Ollama sẽ cố gắng tải các kiến trúc được hỗ trợ (Llama, Mistral, Phi, Gemma, v.v.).
  • Đường dẫn tương đối hoặc tuyệt đối đến một tệp mô hình duy nhất ở định dạng GGUF phổ biến (đóng gói trọng số và siêu dữ liệu). Ví dụ: FROM ./models/mistral-7b-instruct-v0.2.Q5_K_M.gguf.
  • PARAMETER <tên_tham_số> <giá_trị>: Đặt giá trị tham số thời gian chạy mặc định cho mô hình đang được tạo. Các giá trị mặc định này sẽ được sử dụng trừ khi bị ghi đè trong ollama run (qua /set parameter), thông qua các tùy chọn gọi API hoặc bởi các lệnh PARAMETER tiếp theo trong cùng Modelfile.
  • PARAMETER temperature 0.6
  • PARAMETER num_ctx 8192 (Đặt cửa sổ ngữ cảnh mặc định)
  • PARAMETER stop "<|user|>"
  • PARAMETER stop "<|end_of_turn|>" (Bạn có thể có nhiều tham số dừng)
  • PARAMETER repeat_penalty 1.15
  • TEMPLATE "<chuỗi_template_lời_nhắc>": Xác định định dạng cụ thể mà Ollama nên sử dụng để cấu trúc lời nhắc đầu vào trước khi cung cấp cho LLM cơ bản. Điều này cực kỳ quan trọng đối với các mô hình trò chuyện và tuân theo hướng dẫn, vì chúng được đào tạo để mong đợi các token hoặc dấu hiệu đặc biệt phân định tin nhắn hệ thống, lượt của người dùng và lượt của trợ lý. Template sử dụng cú pháp text/template của Go. Các biến chính có sẵn trong chuỗi template bao gồm:
  • {{ .System }}: Placeholder cho tin nhắn hệ thống.
  • {{ .Prompt }}: Placeholder cho đầu vào hiện tại của người dùng (được sử dụng trong /api/generate).
  • {{ .Response }}: Placeholder nơi đầu ra do mô hình tạo ra sẽ được nối vào (thường được sử dụng nội bộ hoặc cho các cấu trúc template cụ thể).
  • {{ range .Messages }} ... {{ .Role }} ... {{ .Content }} ... {{ end }}: Được sử dụng trong các template trò chuyện (/api/chat) để lặp qua toàn bộ lịch sử tin nhắn (lượt hệ thống, người dùng, trợ lý) và định dạng nó một cách chính xác.
  • {{ .First }}: Một giá trị boolean cho biết tin nhắn hiện tại có phải là tin nhắn đầu tiên hay không (hữu ích để thêm các token bắt đầu chuỗi đặc biệt).
    Ví dụ (template ChatML đơn giản hóa):
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}{{ range .Messages }}
<|im_start|>{{ .Role }}
{{ .Content }}<|im_end|>{{ end }}
<|im_start|>assistant
"""

Việc đặt template đúng là điều cần thiết để làm cho mô hình tuân theo hướng dẫn hoặc trò chuyện một cách tự nhiên. Bạn có thể xem template mặc định của mô hình bằng cách sử dụng ollama show --modelfile <tên_mô_hình>.

  • SYSTEM "<tin_nhắn_hệ_thống_mặc_định>": Cung cấp lời nhắc hệ thống mặc định sẽ được sử dụng nếu không có tin nhắn hệ thống nào khác được cung cấp qua API hoặc CLI. Điều này hữu ích để đặt một tính cách hoặc bộ hướng dẫn nhất quán cho mô hình.
  • SYSTEM "Bạn là một trợ lý AI hữu ích tập trung vào việc cung cấp câu trả lời ngắn gọn."
  • ADAPTER </đường_dẫn/đến/trọng_số_adapter>: Áp dụng bộ điều hợp LoRA (Low-Rank Adaptation) hoặc QLoRA cho mô hình cơ sở được chỉ định trong lệnh FROM. Bộ điều hợp là các bộ trọng số nhỏ được đào tạo để sửa đổi hoặc chuyên môn hóa một LLM được đào tạo trước cho một tác vụ, phong cách hoặc lĩnh vực kiến thức cụ thể mà không cần đào tạo lại toàn bộ mô hình lớn. Đường dẫn có thể trỏ đến:
  • Một tệp .gguf duy nhất chứa bộ điều hợp.
  • Một thư mục chứa trọng số bộ điều hợp ở định dạng Safetensors (adapter_model.safetensors, adapter_config.json).
    Quan trọng: Mô hình cơ sở (FROM) phải giống hệt mô hình mà bộ điều hợp ban đầu được đào tạo trên đó để nó hoạt động chính xác.
  • LICENSE "<chi_tiết_giấy_phép>": Nhúng thông tin giấy phép vào siêu dữ liệu của mô hình. Có thể là một mã định danh ngắn (như "MIT") hoặc một khối văn bản dài hơn.
  • MESSAGE user "<tin_nhắn_người_dùng_ví_dụ>" / MESSAGE assistant "<phản_hồi_trợ_lý_ví_dụ>": Xác định các lượt hội thoại ví dụ. Đôi khi chúng có thể giúp định hướng giọng điệu, phong cách hoặc định dạng đầu ra mong đợi của mô hình, đặc biệt là đối với các kịch bản gợi ý ít lần (few-shot prompting), mặc dù hiệu quả của chúng khác nhau giữa các mô hình.

Xây dựng Mô hình Ollama từ Modelfile:
Sau khi bạn đã tạo Modelfile của mình (ví dụ: lưu dưới dạng MyCustomModel.modelfile), bạn sử dụng lệnh ollama create để xây dựng mô hình Ollama tương ứng:

ollama create my-new-model-name -f MyCustomModel.modelfile

Ollama xử lý các lệnh, có khả năng kết hợp các lớp, áp dụng bộ điều hợp, đặt tham số và đăng ký mô hình mới (my-new-model-name) trong thư viện cục bộ của bạn. Sau đó, bạn có thể chạy nó giống như bất kỳ mô hình nào khác: ollama run my-new-model-name.

Nhập Mô hình Bên ngoài vào Ollama (GGUF, Safetensors)

Hệ thống Modelfile của Ollama cung cấp một cách liền mạch để sử dụng các mô hình thu được từ các nguồn khác (như Hugging Face, các nhà nghiên cứu độc lập, v.v.) được phân phối ở các định dạng tiêu chuẩn.

Nhập Mô hình GGUF vào Ollama: GGUF là một định dạng phổ biến được thiết kế đặc biệt cho llama.cpp và các công cụ suy luận tương tự. Nó đóng gói trọng số mô hình (thường được lượng tử hóa trước), thông tin tokenizer và siêu dữ liệu vào một tệp duy nhất. Đây thường là định dạng dễ nhập nhất.

  1. Tải xuống tệp .gguf (ví dụ: zephyr-7b-beta.Q5_K_M.gguf).
  2. Tạo một Modelfile tối thiểu (ví dụ: ZephyrImport.modelfile):
# ZephyrImport.modelfile
FROM ./zephyr-7b-beta.Q5_K_M.gguf

# Quan trọng: Thêm template lời nhắc chính xác cho mô hình này!
# (Tra cứu định dạng template bắt buộc của mô hình)
TEMPLATE """<|system|>
{{ .System }}</s>
<|user|>
{{ .Prompt }}</s>
<|assistant|>
{{ .Response }}</s>
"""
PARAMETER num_ctx 4096 # Đặt ngữ cảnh mặc định hợp lý
SYSTEM "Bạn là một chatbot thân thiện." # Lời nhắc hệ thống mặc định tùy chọn
  1. Xây dựng mô hình Ollama: ollama create my-zephyr-gguf -f ZephyrImport.modelfile.

Nhập Mô hình Safetensors (Trọng số Đầy đủ) vào Ollama: Safetensors là một định dạng an toàn và nhanh chóng để lưu trữ tensor mô hình. Nếu bạn có bộ trọng số và tệp cấu hình hoàn chỉnh cho một mô hình ở định dạng này:

  1. Đảm bảo tất cả các tệp cần thiết (tệp trọng số *.safetensors, config.json, tokenizer.json, special_tokens_map.json, tokenizer_config.json, v.v.) được đặt trong một thư mục duy nhất (ví dụ: /data/models/Mistral-7B-v0.1-full/).
  2. Tạo một Modelfile tham chiếu đến thư mục này:
# MistralImport.modelfile
FROM /data/models/Mistral-7B-v0.1-full/

# Thêm các lệnh TEMPLATE, PARAMETER, SYSTEM bắt buộc
TEMPLATE """[INST] {{ if .System }}{{ .System }} \n{{ end }}{{ .Prompt }} [/INST]
{{ .Response }}"""
PARAMETER num_ctx 4096
PARAMETER temperature 0.7
  1. Xây dựng mô hình: ollama create my-mistral-safetensors -f MistralImport.modelfile. Ollama sẽ cố gắng tải các kiến trúc tương thích. Nếu mô hình không được lượng tử hóa (ví dụ: FP16), bạn có thể tùy chọn lượng tử hóa nó trong quá trình tạo (xem bên dưới).

Áp dụng Bộ điều hợp LoRA Safetensors qua Modelfile Ollama:

  1. Đầu tiên, đảm bảo bạn có mô hình Ollama cơ sở chính xác mà bộ điều hợp LoRA đã được đào tạo cho. Lấy nó nếu cần (ví dụ: ollama pull llama3.2:8b).
  2. Đặt các tệp bộ điều hợp LoRA (ví dụ: adapter_model.safetensors, adapter_config.json) vào thư mục riêng của chúng (ví dụ: /data/adapters/my_llama3_lora/).
  3. Tạo một Modelfile chỉ định cả cơ sở và bộ điều hợp:
# ApplyLora.modelfile
FROM llama3.2:8b # Phải khớp với cơ sở của bộ điều hợp!

ADAPTER /data/adapters/my_llama3_lora/

# Điều chỉnh tham số hoặc template nếu LoRA yêu cầu
PARAMETER temperature 0.5
SYSTEM "Bây giờ bạn phản hồi theo phong cách được dạy bởi LoRA."
  1. Xây dựng mô hình đã điều chỉnh: ollama create llama3-with-my-lora -f ApplyLora.modelfile.

Lượng tử hóa Mô hình với Ollama

Lượng tử hóa là quá trình giảm độ chính xác số của trọng số của mô hình (ví dụ: chuyển đổi số dấu phẩy động 16 bit thành số nguyên 4 bit). Điều này làm giảm đáng kể kích thước tệp và dung lượng bộ nhớ (sử dụng RAM/VRAM) của mô hình và tăng tốc độ suy luận, giúp có thể chạy các mô hình lớn hơn, có khả năng hơn trên phần cứng tiêu dùng. Sự đánh đổi thường là một sự giảm nhỏ, thường không thể nhận thấy, về chất lượng đầu ra.

Ollama có thể thực hiện lượng tử hóa trong quá trình tạo mô hình nếu lệnh FROM trong Modelfile của bạn trỏ đến trọng số mô hình không được lượng tử hóa hoặc có độ chính xác cao hơn (thường là Safetensors FP16 hoặc FP32).

Cách Lượng tử hóa bằng ollama create:

  1. Tạo một Modelfile trỏ đến thư mục chứa trọng số mô hình chưa được lượng tử hóa:
# QuantizeMe.modelfile
FROM /đường_dẫn/đến/mô_hình_fp16_chưa_lượng_tử_hóa_của_tôi/
# Thêm TEMPLATE, PARAMETER, SYSTEM nếu cần
  1. Chạy lệnh ollama create, thêm cờ -q (hoặc --quantize) theo sau là mã định danh cấp độ lượng tử hóa mong muốn:
# Lượng tử hóa thành Q4_K_M (cân bằng phổ biến về kích thước/chất lượng)
ollama create my-quantized-model-q4km -f QuantizeMe.modelfile -q q4_K_M

# Lượng tử hóa thành Q5_K_M (lớn hơn một chút, chất lượng có thể tốt hơn)
ollama create my-quantized-model-q5km -f QuantizeMe.modelfile -q q5_K_M

# Lượng tử hóa thành Q8_0 (lượng tử hóa phổ biến lớn nhất, chất lượng tốt nhất trong số các lượng tử hóa)
ollama create my-quantized-model-q8 -f QuantizeMe.modelfile -q q8_0

# Lượng tử hóa thành Q3_K_S (rất nhỏ, mất nhiều chất lượng hơn)
ollama create my-quantized-model-q3ks -f QuantizeMe.modelfile -q q3_K_S

Ollama sử dụng các quy trình lượng tử hóa từ llama.cpp để thực hiện chuyển đổi và lưu mô hình mới được lượng tử hóa dưới tên được chỉ định.

Các Cấp độ Lượng tử hóa Phổ biến:

  • q4_0, q4_1: Lượng tử hóa 4 bit cơ bản.
  • q5_0, q5_1: Lượng tử hóa 5 bit cơ bản.
  • q8_0: Lượng tử hóa 8 bit (kích thước tệp lớn hơn, gần với chất lượng gốc hơn).
  • q3_K_S, q3_K_M, q3_K_L: Các phương pháp "K-Quant" 3 bit tiên tiến hơn (Các biến thể nội bộ Nhỏ/Trung bình/Lớn). Rất nhỏ, đánh đổi chất lượng đáng chú ý.
  • q4_K_S, q4_K_M: K-Quant 4 bit tiên tiến. q4_K_M thường là điểm tối ưu được đề xuất.
  • q5_K_S, q5_K_M: K-Quant 5 bit tiên tiến. Cân bằng tốt, lớn hơn một chút so với Q4_K.
  • q6_K: K-Quant 6 bit tiên tiến. Kích thước lớn hơn, gần bằng chất lượng Q8.

Việc chọn cấp độ lượng tử hóa phù hợp phụ thuộc vào các hạn chế phần cứng của bạn và khả năng chấp nhận việc giảm chất lượng tiềm năng. Thường đáng để thử q4_K_M hoặc q5_K_M trước.

Chia sẻ Mô hình Ollama Tùy chỉnh của bạn

Nếu bạn đã tạo một biến thể mô hình độc đáo bằng cách sử dụng Modelfile – có lẽ bằng cách áp dụng một LoRA cụ thể, đặt lời nhắc hệ thống và template sáng tạo, hoặc tinh chỉnh các tham số – bạn có thể chia sẻ sáng tạo của mình với cộng đồng Ollama rộng lớn hơn thông qua trang web đăng ký mô hình Ollama chính thức.

Các bước để Chia sẻ Mô hình Ollama:

  1. Tạo Tài khoản Ollama: Đăng ký tài khoản miễn phí trên trang web Ollama (ollama.com). Tên người dùng bạn chọn sẽ trở thành không gian tên cho các mô hình được chia sẻ của bạn.
  2. Liên kết Ollama Cục bộ của bạn: Bạn cần liên kết cài đặt Ollama cục bộ với tài khoản trực tuyến của mình. Điều này liên quan đến việc thêm khóa công khai Ollama của máy cục bộ vào cài đặt tài khoản của bạn trên trang web. Trang web cung cấp hướng dẫn cụ thể về cách tìm tệp khóa công khai cục bộ của bạn (id_ed25519.pub) dựa trên hệ điều hành của bạn.
  3. Đặt tên Mô hình của bạn một cách Chính xác: Các mô hình được chia sẻ phải được đặt tên theo không gian tên với tên người dùng Ollama của bạn, theo định dạng tên_người_dùng_của_bạn/tên_mô_hình_của_bạn. Nếu mô hình tùy chỉnh cục bộ của bạn có tên khác (ví dụ: mario), trước tiên bạn cần sao chép nó sang tên có không gian tên chính xác bằng ollama cp:
# Giả sử tên người dùng của bạn là 'luigi' và mô hình cục bộ là 'mario'
ollama cp mario luigi/mario
  1. Đẩy Mô hình lên Sổ đăng ký: Sau khi mô hình được đặt tên chính xác cục bộ và khóa của bạn được liên kết, hãy sử dụng lệnh ollama push:
ollama push luigi/mario

Ollama sẽ tải lên các lớp mô hình và siêu dữ liệu cần thiết lên sổ đăng ký.

Sau khi quá trình đẩy hoàn tất, những người dùng Ollama khác trên toàn thế giới có thể dễ dàng tải xuống và chạy mô hình được chia sẻ của bạn chỉ bằng cách sử dụng tên có không gian tên của nó:

ollama run luigi/mario

Cơ chế chia sẻ này thúc đẩy sự hợp tác và cho phép cộng đồng hưởng lợi từ các mô hình chuyên biệt hoặc được tùy chỉnh sáng tạo.

Tối ưu hóa Hiệu suất Ollama bằng Tăng tốc GPU

Mặc dù Ollama có thể chạy các mô hình hoàn toàn trên CPU của máy tính, nhưng việc tận dụng một Bộ xử lý Đồ họa (GPU) tương thích sẽ mang lại sự tăng tốc hiệu suất đáng kể, tăng tốc đáng kể tốc độ mà các mô hình tạo ra văn bản (tốc độ suy luận). Ollama được thiết kế để tự động phát hiện và sử dụng các GPU được hỗ trợ bất cứ khi nào có thể.

Ollama với GPU NVIDIA: Ollama cung cấp hỗ trợ tuyệt vời cho GPU NVIDIA, yêu cầu:

  • Một GPU có Khả năng Tính toán CUDA 5.0 trở lên (hầu hết các thẻ GeForce GTX 900 series / Quadro M series trở lên). Kiểm tra danh sách GPU CUDA của NVIDIA để biết tính tương thích.
  • Các trình điều khiển NVIDIA độc quyền chính thức được cài đặt chính xác trên hệ thống máy chủ của bạn (Linux hoặc Windows).
  • Trên Linux với Docker, NVIDIA Container Toolkit phải được cài đặt và cấu hình.
    Ollama nên tự động phát hiện phần cứng và trình điều khiển tương thích và giảm tải tính toán cho GPU.

Ollama với GPU AMD Radeon: Hỗ trợ cho các GPU AMD hiện đại có sẵn trên cả Windows và Linux:

  • Yêu cầu trình điều khiển AMD Radeon Software (Adrenalin Edition) gần đây trên Windows.
  • Yêu cầu ngăn xếp phần mềm ROCm (Radeon Open Compute platform) được cài đặt trên Linux (khuyến nghị phiên bản 5 hoặc 6+). Trình cài đặt Ollama Linux hoặc hình ảnh Docker :rocm thường giúp giải quyết các phụ thuộc, nhưng có thể cần cài đặt ROCm thủ công để có khả năng tương thích đầy đủ trên một số bản phân phối.
  • Các GPU được hỗ trợ thường bao gồm dòng RX 6000, dòng RX 7000, dòng PRO W6000/W7000 và một số bộ tăng tốc Instinct. Kiểm tra tài liệu GPU Ollama chính thức để biết danh sách chi tiết.

Ollama với Apple Silicon (macOS): Trên máy Mac được trang bị chip dòng M1, M2, M3 hoặc M4, Ollama tự động sử dụng khả năng GPU tích hợp thông qua API đồ họa Metal của Apple. Thường không cần cài đặt trình điều khiển hoặc cấu hình bổ sung; tăng tốc GPU hoạt động ngay lập tức.

Xác minh Việc sử dụng GPU Ollama:
Cách dễ nhất để kiểm tra xem Ollama có thực sự đang sử dụng GPU của bạn hay không là chạy lệnh ollama ps trong khi một mô hình đang được tải (ví dụ: ngay sau khi bắt đầu ollama run <mô_hình> trong một terminal khác, hoặc trong khi một yêu cầu API đang được xử lý). Kiểm tra cột PROCESSOR trong đầu ra:

  • gpu: Cho biết các lớp của mô hình chủ yếu được tải lên GPU.
  • cpu: Cho biết mô hình đang chạy hoàn toàn trên CPU. Điều này có thể có nghĩa là không có GPU tương thích nào được phát hiện, trình điều khiển bị thiếu hoặc không chính xác, hoặc đã xảy ra sự cố khi khởi tạo hỗ trợ GPU. Kiểm tra nhật ký máy chủ Ollama để tìm lỗi.

Chọn GPU Cụ thể trong Thiết lập Ollama Đa GPU:
Nếu hệ thống của bạn chứa nhiều GPU tương thích, bạn có thể hướng dẫn Ollama (và llama.cpp cơ bản) nên sử dụng (các) thiết bị cụ thể nào bằng cách đặt các biến môi trường trước khi khởi chạy quy trình máy chủ/ứng dụng Ollama:

  • NVIDIA (CUDA_VISIBLE_DEVICES): Đặt biến này thành danh sách các chỉ số GPU được phân tách bằng dấu phẩy (bắt đầu từ 0) hoặc, tốt nhất là, UUID GPU.
  • export CUDA_VISIBLE_DEVICES=0 (Chỉ sử dụng GPU đầu tiên được NVIDIA phát hiện).
  • export CUDA_VISIBLE_DEVICES=1 (Chỉ sử dụng GPU thứ hai).
  • export CUDA_VISIBLE_DEVICES=GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,GPU-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy (Sử dụng các GPU cụ thể được xác định bằng UUID của chúng, bạn có thể tìm thấy bằng nvidia-smi -L).
  • AMD (ROCR_VISIBLE_DEVICES): Đặt biến này thành danh sách các chỉ số GPU được phân tách bằng dấu phẩy như được báo cáo bởi lệnh rocminfo (thường bắt đầu từ 0).
  • export ROCR_VISIBLE_DEVICES=0 (Sử dụng GPU AMD đầu tiên được phát hiện).
  • export ROCR_VISIBLE_DEVICES=1,2 (Sử dụng GPU AMD thứ hai và thứ ba được phát hiện).

Việc đặt ID thiết bị không hợp lệ (ví dụ: export CUDA_VISIBLE_DEVICES=-1) thường được sử dụng như một cách để cố tình buộc Ollama chỉ sử dụng CPU, điều này có thể hữu ích cho việc gỡ lỗi. Hãy nhớ khởi động lại máy chủ/ứng dụng Ollama sau khi đặt các biến môi trường này để chúng có hiệu lực.

Cấu hình Môi trường Ollama của bạn

Ngoài các cài đặt mặc định, hành vi của Ollama có thể được tinh chỉnh bằng cách sử dụng các biến môi trường khác nhau. Chúng cho phép bạn tùy chỉnh cài đặt mạng, vị trí lưu trữ, cấp độ ghi nhật ký và hơn thế nữa.

Các Biến Môi trường Ollama Chính để Cấu hình

  • OLLAMA_HOST: Kiểm soát giao diện mạng và cổng mà máy chủ API Ollama lắng nghe.
  • Mặc định: 127.0.0.1:11434 (Chỉ lắng nghe trên giao diện loopback, chỉ có thể truy cập từ cùng một máy).
  • Ví dụ: 0.0.0.0:11434 (Lắng nghe trên tất cả các giao diện mạng có sẵn, giúp Ollama có thể truy cập được từ các thiết bị khác trên mạng cục bộ của bạn. Cảnh báo: Đảm bảo các quy tắc tường lửa thích hợp được đặt nếu bạn định để lộ Ollama ra bên ngoài).
  • Ví dụ: 192.168.1.100:11500 (Chỉ lắng nghe trên một địa chỉ IP cục bộ cụ thể và một cổng tùy chỉnh).
  • OLLAMA_MODELS: Quan trọng là, biến này cho phép bạn chỉ định đường dẫn thư mục tùy chỉnh nơi Ollama nên lưu trữ và tìm kiếm các mô hình đã tải xuống. Điều này cực kỳ hữu ích nếu ổ đĩa mặc định của bạn (nơi ~/.ollama hoặc C:\Users\<NgườiDùng>\.ollama cư trú) sắp hết dung lượng hoặc nếu bạn muốn tổ chức các mô hình trên một ổ SSD chuyên dụng hoặc ổ đĩa lớn hơn.
  • Ví dụ (Linux/macOS): export OLLAMA_MODELS=/mnt/large_drive/my_ollama_models
  • Ví dụ (Windows): Đặt OLLAMA_MODELS thành D:\OllamaData thông qua Thuộc tính Hệ thống.
  • Quan trọng: Đảm bảo thư mục tồn tại và tài khoản người dùng chạy quy trình máy chủ Ollama có quyền đọc và ghi đầy đủ đối với đường dẫn tùy chỉnh này.
  • OLLAMA_ORIGINS: Quản lý Chia sẻ Tài nguyên Nguồn gốc Chéo (CORS) cho API Ollama. Theo mặc định, các trình duyệt web hạn chế các trang web thực hiện yêu cầu API đến các miền (nguồn gốc) khác với miền mà trang đó được phục vụ. Nếu bạn đang chạy một giao diện người dùng web riêng biệt (như Open WebUI, Lobe Chat) được phục vụ từ một nguồn gốc khác (ví dụ: http://localhost:3000) cần gọi API Ollama của bạn (tại http://localhost:11434), bạn phải thêm nguồn gốc của giao diện người dùng vào biến này.
  • Ví dụ: export OLLAMA_ORIGINS=http://localhost:3000,http://192.168.1.50:8080 (Cho phép yêu cầu từ hai nguồn gốc cụ thể này).
  • Ví dụ: export OLLAMA_ORIGINS='*' (Cho phép yêu cầu từ bất kỳ nguồn gốc nào. Sử dụng cẩn thận, đặc biệt nếu OLLAMA_HOST không phải là 127.0.0.1, vì điều này có thể làm lộ API của bạn rộng rãi). Có thể bao gồm các giao thức như chrome-extension://*.
  • OLLAMA_DEBUG: Đặt thành 1 để bật ghi nhật ký gỡ lỗi chi tiết. Điều này cung cấp thông tin chi tiết hơn nhiều về các hoạt động nội bộ của Ollama, bao gồm các bước phát hiện GPU, chi tiết tải mô hình và các lỗi tiềm ẩn, điều này là vô giá để khắc phục sự cố.
  • Ví dụ: export OLLAMA_DEBUG=1
  • OLLAMA_KEEP_ALIVE: Kiểm soát thời gian Ollama giữ một mô hình được tải trong bộ nhớ sau yêu cầu cuối cùng của nó. Theo mặc định, có thể là khoảng 5 phút (5m). Đặt thành 0 sẽ dỡ bỏ mô hình ngay sau khi sử dụng (tiết kiệm RAM/VRAM nhưng tăng thời gian tải cho yêu cầu tiếp theo). Đặt thành thời lượng dài hơn (ví dụ: 30m) hoặc -1 (giữ tải vô thời hạn cho đến khi máy chủ dừng) có thể tăng tốc các yêu cầu thường xuyên đến cùng một mô hình nhưng tiêu tốn tài nguyên liên tục.
  • Ví dụ: export OLLAMA_KEEP_ALIVE=15m
  • HTTPS_PROXY / HTTP_PROXY / NO_PROXY: Các biến môi trường mạng tiêu chuẩn được sử dụng nếu Ollama cần định tuyến các yêu cầu internet gửi đi của nó (ví dụ: khi chạy ollama pull để tải xuống mô hình từ ollama.com) thông qua một máy chủ proxy, phổ biến trong môi trường doanh nghiệp.
  • Ví dụ: export HTTPS_PROXY=http://proxy.mycompany.com:8080

Các Phương pháp Đặt Biến Môi trường Ollama

Cách chính xác để đặt các biến này phụ thuộc vào cách bạn đã cài đặt và chạy Ollama:

Ollama trên macOS (Sử dụng App): Các biến môi trường cho ứng dụng GUI trên macOS được đặt tốt nhất bằng launchctl. Mở Terminal và sử dụng:

launchctl setenv OLLAMA_MODELS "/Volumes/ExternalSSD/OllamaStorage"
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
# Lặp lại cho các biến khác

Sau khi đặt các biến, bạn phải Thoát và khởi động lại ứng dụng Ollama từ biểu tượng thanh menu để các thay đổi có hiệu lực.

Ollama trên Linux (Sử dụng Dịch vụ Systemd): Phương pháp được khuyến nghị là tạo một tệp ghi đè cho dịch vụ:

  1. Chạy sudo systemctl edit ollama.service. Thao tác này sẽ mở một trình soạn thảo văn bản trống.
  2. Thêm các dòng sau, sửa đổi biến và giá trị nếu cần:
[Service]
Environment="OLLAMA_MODELS=/đường_dẫn/đến/thư_mục/mô_hình/tùy_chỉnh"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_DEBUG=1"
  1. Lưu và đóng trình soạn thảo.
  2. Áp dụng các thay đổi: sudo systemctl daemon-reload
  3. Khởi động lại dịch vụ Ollama: sudo systemctl restart ollama

Ollama trên Windows: Sử dụng trình chỉnh sửa Biến Môi trường tích hợp:

  1. Tìm kiếm "Chỉnh sửa biến môi trường hệ thống" trong menu Start và mở nó.
  2. Nhấp vào nút "Biến Môi trường...".
  3. Bạn có thể đặt biến cho người dùng cụ thể của mình ("Biến người dùng") hoặc cho tất cả người dùng ("Biến hệ thống"). Biến hệ thống thường yêu cầu quyền quản trị viên.
  4. Nhấp vào "Mới..." trong phần mong muốn.
  5. Nhập Tên biến (ví dụ: OLLAMA_MODELS) và Giá trị biến (ví dụ: D:\OllamaData).
  6. Nhấp OK trên tất cả các hộp thoại đang mở.
  7. Quan trọng là, bạn phải khởi động lại quy trình nền Ollama. Mở Trình quản lý Tác vụ (Ctrl+Shift+Esc), đi đến tab "Dịch vụ", tìm "Ollama", nhấp chuột phải và chọn "Khởi động lại". Hoặc, khởi động lại máy tính của bạn.

Ollama qua Docker: Truyền các biến môi trường trực tiếp trong lệnh docker run bằng cách sử dụng cờ -e cho mỗi biến:

docker run -d \
  --gpus=all \
  -v ollama_data:/root/.ollama \
  -p 127.0.0.1:11434:11434 \
  -e OLLAMA_HOST="0.0.0.0:11434" \
  -e OLLAMA_DEBUG="1" \
  -e OLLAMA_KEEP_ALIVE="10m" \
  --name my_ollama_configured \
  ollama/ollama

Ollama qua ollama serve thủ công trong Terminal: Đơn giản chỉ cần đặt tiền tố lệnh bằng các phép gán biến trên cùng một dòng:

OLLAMA_DEBUG=1 OLLAMA_HOST=0.0.0.0:11434 OLLAMA_MODELS=/data/ollama ollama serve

Các biến này sẽ chỉ áp dụng cho phiên bản máy chủ cụ thể đó.

Chọn phương pháp phù hợp với thiết lập của bạn và nhớ khởi động lại quy trình máy chủ Ollama sau khi thực hiện các thay đổi để chúng có hiệu lực.

Khắc phục sự cố Ollama Phổ biến

Ngay cả với sự tập trung vào tính đơn giản của Ollama, đôi khi bạn có thể gặp phải những trục trặc. Dưới đây là cách chẩn đoán và giải quyết một số sự cố thường gặp:

Tham khảo Nhật ký Ollama

Công cụ chẩn đoán chính của bạn là tệp nhật ký máy chủ Ollama. Nó ghi lại thông tin khởi động, các lần thử tải mô hình, kết quả phát hiện GPU, yêu cầu API và, quan trọng nhất, các thông báo lỗi chi tiết.

Vị trí Tệp Nhật ký Mặc định:

  • Ollama trên macOS: ~/.ollama/logs/server.log
  • Ollama trên Linux (Systemd): Sử dụng lệnh kiểm soát journal: journalctl -u ollama. Thêm -f để theo dõi nhật ký theo thời gian thực (journalctl -u ollama -f). Sử dụng -n 100 để xem 100 dòng cuối cùng (journalctl -u ollama -n 100).
  • Ollama trên Windows: Tệp nhật ký là server.log nằm bên trong %LOCALAPPDATA%\Ollama. Bạn có thể dễ dàng mở thư mục này bằng cách dán %LOCALAPPDATA%\Ollama vào thanh địa chỉ của File Explorer hoặc hộp thoại Run (Win+R).
  • Ollama qua Docker: Sử dụng lệnh nhật ký Docker: docker logs my_ollama (thay thế my_ollama bằng tên bộ chứa của bạn). Thêm -f để theo dõi (docker logs -f my_ollama).
  • Ollama qua ollama serve thủ công: Nhật ký được in trực tiếp vào cửa sổ terminal nơi bạn đã khởi chạy lệnh.

Mẹo: Để khắc phục sự cố chi tiết hơn, luôn bật ghi nhật ký gỡ lỗi bằng cách đặt biến môi trường OLLAMA_DEBUG=1 trước khi khởi động máy chủ Ollama, sau đó kiểm tra lại nhật ký.

Sửa lỗi Ollama: listen tcp 127.0.0.1:11434: bind: address already in use

Thông báo lỗi cụ thể này là một trong những sự cố phổ biến nhất mà người dùng mới gặp phải. Nó có nghĩa là Ollama không thể khởi động máy chủ API của mình vì một quy trình khác đã chiếm cổng mạng (mặc định 11434) mà Ollama cần để lắng nghe.

  • Nguyên nhân Có thể:
  • Một phiên bản khác của máy chủ Ollama đã chạy trong nền (có thể từ một phiên trước đó không được tắt đúng cách).
  • Một ứng dụng hoàn toàn khác trên hệ thống của bạn tình cờ đang sử dụng cổng 11434.
  • Giải pháp 1: Xác định và Dừng Quy trình Gây xung đột: Bạn cần tìm ra quy trình nào đang sử dụng cổng và dừng nó lại (nếu làm vậy là an toàn).
  • Linux / macOS: Mở terminal và chạy sudo lsof -i :11434 hoặc sudo netstat -tulnp | grep 11434. Các lệnh này sẽ hiển thị ID Quy trình (PID) của chương trình đang sử dụng cổng. Sau đó, bạn có thể thử dừng nó một cách nhẹ nhàng hoặc sử dụng sudo kill <PID>. Nếu đó là một quy trình Ollama cũ, việc kết thúc nó sẽ giải quyết được xung đột.
  • Windows: Mở Command Prompt với tư cách Quản trị viên và chạy netstat -ano | findstr "11434". Nhìn vào cột cuối cùng để biết PID. Mở Trình quản lý Tác vụ (Ctrl+Shift+Esc), đi đến tab "Chi tiết" (hoặc "Quy trình" và thêm cột PID), tìm quy trình có PID đó và kết thúc nó nếu thích hợp.
  • Giải pháp 2: Thay đổi Cổng Lắng nghe của Ollama: Nếu bạn không thể dừng quy trình gây xung đột hoặc nếu bạn cố tình muốn Ollama chạy trên một cổng khác, bạn có thể cấu hình Ollama để sử dụng một cổng thay thế. Đặt biến môi trường OLLAMA_HOST để bao gồm cổng mong muốn của bạn trước khi khởi động Ollama.
  • Ví dụ: Đặt OLLAMA_HOST thành 127.0.0.1:11435 (sử dụng các phương pháp được mô tả trong phần Cấu hình).
  • Hãy nhớ điều chỉnh mọi cấu hình máy khách API, giao diện người dùng web hoặc tập lệnh để trỏ đến cổng mới (ví dụ: http://localhost:11435) sau khi thực hiện thay đổi này.

Giải quyết các Sự cố Phát hiện và Sử dụng GPU Ollama

Nếu ollama ps hiển thị cpu thay vì gpu, hoặc nếu bạn gặp các lỗi cụ thể liên quan đến GPU trong nhật ký (như CUDA error, ROCm error), hãy làm theo các bước sau:

  • Xác nhận Tính tương thích của GPU: Kiểm tra lại xem mô hình GPU cụ thể của bạn có được liệt kê là được hỗ trợ trong tài liệu GPU Ollama chính thức trên GitHub hay không.
  • Cập nhật Trình điều khiển: Đảm bảo bạn đã cài đặt đúng trình điều khiển chính thức ổn định mới nhất trực tiếp từ các trang web của NVIDIA hoặc AMD. Các trình điều khiển chung đi kèm với HĐH thường không đủ. Rất nên khởi động lại toàn bộ hệ thống sau khi cài đặt trình điều khiển.
  • Kiểm tra Nhật ký Ollama (Chế độ Gỡ lỗi): Đặt OLLAMA_DEBUG=1, khởi động lại máy chủ Ollama và kiểm tra cẩn thận nhật ký khởi động. Tìm kiếm các thông báo liên quan đến phát hiện GPU, tải thư viện (CUDA, ROCm) và bất kỳ mã lỗi cụ thể nào.
  • Thông tin Cụ thể về NVIDIA (Linux):
  • Xác minh lệnh nvidia-smi hoạt động và hiển thị GPU cũng như phiên bản trình điều khiển của bạn.
  • Nếu sử dụng Docker, hãy xác nhận NVIDIA Container Toolkit đã được cài đặt và hoạt động (docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi).
  • Kiểm tra xem các mô-đun kernel cần thiết có được tải không (lsmod | grep nvidia). Đôi khi tải lại (sudo rmmod nvidia_uvm nvidia && sudo modprobe nvidia_uvm nvidia) có thể hữu ích.
  • Kiểm tra nhật ký hệ thống (dmesg | grep -iE 'nvidia|nvrm') để tìm lỗi phần cứng hoặc trình điều khiển.
  • Thông tin Cụ thể về AMD (Linux):
  • Xác minh lệnh rocminfo hoạt động và hiển thị GPU của bạn.
  • Đảm bảo người dùng chạy Ollama (hoặc bộ chứa Docker) có quyền chính xác đối với các thiết bị /dev/kfd/dev/dri/renderD* (thường yêu cầu thành viên trong các nhóm rendervideo). Kiểm tra thành viên nhóm bằng groups $USER hoặc groups ollama. Bạn có thể cần --group-add render --group-add video trong lệnh Docker của mình.
  • Kiểm tra nhật ký hệ thống (dmesg | grep -iE 'amdgpu|kfd') để tìm lỗi.
  • Buộc CPU (để kiểm tra): Là một bước chẩn đoán tạm thời, hãy thử buộc sử dụng CPU bằng cách đặt CUDA_VISIBLE_DEVICES=-1 hoặc ROCR_VISIBLE_DEVICES=-1. Nếu Ollama chạy chính xác trên CPU, điều đó xác nhận sự cố liên quan đến thiết lập GPU.

Giải quyết các Sự cố Ollama Phổ biến Khác

  • Lỗi Quyền (Thư mục Mô hình): Đặc biệt trên Linux với dịch vụ systemd, nếu Ollama không thể lấy hoặc tạo mô hình, nó có thể thiếu quyền ghi đối với thư mục lưu trữ mô hình (OLLAMA_MODELS hoặc mặc định). Đảm bảo thư mục tồn tại và thuộc sở hữu hoặc có thể ghi bởi người dùng/nhóm ollama (sudo chown -R ollama:ollama /đường_dẫn/đến/mô_hìnhsudo chmod -R 775 /đường_dẫn/đến/mô_hình).
  • Tải xuống Mô hình Chậm (ollama pull):
  • Kiểm tra tốc độ kết nối internet cơ bản của bạn.
  • Nếu bạn đang ở sau proxy, hãy đảm bảo HTTPS_PROXY được cấu hình chính xác.
  • Kiểm tra các quy tắc tường lửa có khả năng chặn hoặc điều tiết kết nối đến ollama.com.
  • Trên Windows với WSL2, sự cố LSO (Large Send Offload) đã biết đôi khi có thể ảnh hưởng đến hiệu suất mạng trong WSL. Việc tắt LSOv2 cho bộ điều hợp mạng ảo WSL trong cài đặt Bộ điều hợp Mạng Windows có thể hữu ích, mặc dù điều này hiện ít phổ biến hơn.
  • Đầu ra Terminal Bị lỗi (ollama run trên Windows cũ): Nếu bạn thấy các ký tự lạ như ←[?25h... trong cmd.exe hoặc PowerShell trên các phiên bản Windows 10 cũ hơn, có khả năng là do hỗ trợ mã thoát ANSI kém. Các giải pháp tốt nhất là:
  • Nâng cấp Windows 10 lên phiên bản 22H2 trở lên.
  • Sử dụng Windows 11.
  • Sử dụng ứng dụng Windows Terminal hiện đại, có hỗ trợ ANSI tuyệt vời.

Nếu bạn đã thử hết các bước khắc phục sự cố này và kiểm tra nhật ký gỡ lỗi mà không thành công, cộng đồng Ollama là một nguồn tài nguyên tuyệt vời. Chuẩn bị mô tả rõ ràng về sự cố, bao gồm các chi tiết liên quan về HĐH, phiên bản Ollama, phần cứng (CPU/GPU/RAM), mô hình cụ thể bạn đang sử dụng, lệnh bạn đã chạy và quan trọng là, các phần liên quan từ nhật ký gỡ lỗi của bạn. Đăng câu hỏi của bạn trên Discord của Ollama hoặc gửi một issue được ghi lại đầy đủ trên kho lưu trữ GitHub của Ollama.

Cách gỡ cài đặt Ollama hoàn toàn

Nếu bạn cần xóa Ollama khỏi hệ thống của mình, quy trình sẽ khác nhau tùy thuộc vào phương pháp cài đặt ban đầu của bạn. Thông thường, nó bao gồm việc xóa ứng dụng/tệp nhị phân, dịch vụ nền (nếu có) và các tệp mô hình/cấu hình đã lưu trữ.

Gỡ cài đặt Ollama trên macOS (Được cài đặt qua .app):

  1. Thoát Ollama: Nhấp vào biểu tượng Ollama trên thanh menu và chọn "Thoát Ollama".
  2. Xóa Ứng dụng: Kéo Ollama.app từ thư mục /Applications của bạn vào Thùng rác/Bin.
  3. Xóa Dữ liệu và Cấu hình: Mở Terminal và thực thi rm -rf ~/.ollama. Cảnh báo: Thao tác này sẽ xóa vĩnh viễn tất cả các mô hình và cấu hình đã tải xuống. Kiểm tra kỹ lệnh trước khi chạy.
  4. (Tùy chọn) Hủy đặt Biến Môi trường: Nếu bạn đã đặt biến thủ công bằng launchctl setenv, bạn có thể hủy đặt chúng: launchctl unsetenv OLLAMA_HOST, launchctl unsetenv OLLAMA_MODELS, v.v.

Gỡ cài đặt Ollama trên Windows (Được cài đặt qua .exe):

  1. Sử dụng Trình gỡ cài đặt Windows: Đi tới "Cài đặt" > "Ứng dụng" > "Ứng dụng đã cài đặt". Tìm "Ollama" trong danh sách, nhấp vào ba dấu chấm (...) bên cạnh và chọn "Gỡ cài đặt". Làm theo lời nhắc gỡ cài đặt.
  2. Xóa Dữ liệu và Cấu hình: Sau khi trình gỡ cài đặt hoàn tất, hãy xóa thủ công thư mục dữ liệu Ollama. Mở File Explorer, nhập %USERPROFILE%\.ollama vào thanh địa chỉ, nhấn Enter và xóa toàn bộ thư mục .ollama. Cảnh báo: Thao tác này sẽ xóa tất cả các mô hình.
  3. (Tùy chọn) Xóa Biến Môi trường: Nếu bạn đã thêm thủ công OLLAMA_HOST, OLLAMA_MODELS, v.v., thông qua Thuộc tính Hệ thống, hãy quay lại đó ("Chỉnh sửa biến môi trường hệ thống") và xóa chúng.

Gỡ cài đặt Ollama trên Linux (Được cài đặt qua Tập lệnh hoặc Tệp nhị phân Thủ công):

  1. Dừng Dịch vụ: sudo systemctl stop ollama
  2. Vô hiệu hóa Dịch vụ: sudo systemctl disable ollama
  3. Xóa Tệp nhị phân: sudo rm /usr/local/bin/ollama (hoặc đường dẫn nơi bạn đã cài đặt nó).
  4. Xóa Tệp Dịch vụ: sudo rm /etc/systemd/system/ollama.service
  5. Tải lại Systemd: sudo systemctl daemon-reload
  6. (Tùy chọn) Xóa Người dùng/Nhóm: Nếu người dùng/nhóm ollama đã được tạo: sudo userdel ollama, sudo groupdel ollama.
  7. Xóa Dữ liệu và Cấu hình: Xóa thư mục lưu trữ mô hình. Điều này phụ thuộc vào nơi nó được lưu trữ:
  • Nếu chạy với tư cách người dùng của bạn: rm -rf ~/.ollama
  • Nếu chạy dưới dạng dịch vụ hệ thống (người dùng ollama): sudo rm -rf /usr/share/ollama/.ollama (hoặc đường dẫn được chỉ định bởi OLLAMA_MODELS trong tệp dịch vụ).
    Cảnh báo: Sử dụng sudo rm -rf hết sức thận trọng. Xác minh đường dẫn là chính xác trước khi thực thi.

Gỡ cài đặt Ollama qua Docker:

  1. Dừng Bộ chứa: docker stop my_ollama (sử dụng tên bộ chứa của bạn).
  2. Xóa Bộ chứa: docker rm my_ollama.
  3. Xóa Hình ảnh: docker rmi ollama/ollama (và ollama/ollama:rocm nếu bạn đã sử dụng nó).
  4. (Tùy chọn, Phá hủy) Xóa Volume: Nếu bạn muốn xóa tất cả các mô hình đã tải xuống được lưu trữ trong volume Docker, hãy chạy docker volume rm ollama_data (sử dụng tên volume bạn đã tạo). Cảnh báo: Thao tác này không thể hoàn tác.

Kết luận: Nắm bắt Sức mạnh của AI Cục bộ với Ollama

Ollama đứng như một công cụ then chốt trong việc dân chủ hóa quyền truy cập vào sức mạnh to lớn của các Mô hình Ngôn ngữ Lớn hiện đại. Bằng cách trừu tượng hóa một cách thanh lịch sự phức tạp của việc thiết lập, cấu hình và thực thi, nó trao quyền cho một loạt người dùng đa dạng – từ các nhà phát triển và nhà nghiên cứu dày dạn kinh nghiệm đến những người đam mê tò mò – để chạy AI tinh vi trực tiếp trên phần cứng của riêng họ. Những lợi thế rất rõ ràng: quyền riêng tư vô song, thoát khỏi chi phí API định kỳ, hoạt động ngoại tuyến đáng tin cậy và khả năng tự do tùy chỉnh sâu và thử nghiệm với các mô hình bằng cách sử dụng hệ thống Modelfile trực quan và API mạnh mẽ.

Cho dù mục tiêu của bạn là xây dựng thế hệ tiếp theo của các ứng dụng dựa trên AI, tiến hành nghiên cứu tiên tiến trong khi duy trì chủ quyền dữ liệu, hay đơn giản là khám phá các khả năng hấp dẫn của việc tạo ngôn ngữ mà không cần phụ thuộc bên ngoài, Ollama cung cấp một nền tảng ổn định, hiệu quả và thân thiện với người dùng. Nó thành công trong việc thu hẹp khoảng cách giữa sức mạnh thô của các công cụ suy luận như llama.cpp và nhu cầu thực tế của người dùng, thúc đẩy sự đổi mới trong bối cảnh AI mã nguồn mở sôi động.

Hành trình vào thế giới LLM cục bộ vừa dễ tiếp cận vừa vô cùng bổ ích, nhờ có Ollama. Tải xuống ứng dụng, lấy mô hình đầu tiên của bạn bằng ollama pull, bắt đầu cuộc trò chuyện bằng ollama run và bắt đầu khai phá tiềm năng rộng lớn của trí tuệ nhân tạo, ngay trên máy tính của riêng bạn.

💡
Bạn muốn một công cụ Kiểm tra API tuyệt vời tạo ra tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, Một cho Tất cả để nhóm Phát triển của bạn có thể làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi yêu cầu của bạn, và thay thế Postman với mức giá hợp lý hơn nhiều!
button

Tải Swagger UI Tiếng Việt Miễn Phí Ở ĐâuQuan điểm

Tải Swagger UI Tiếng Việt Miễn Phí Ở Đâu

Khám phá khó khăn khi muốn có giao diện tiếng Việt cho Swagger UI và tìm hiểu lý do Apidog là một giải pháp nền tảng mạnh mẽ để phát triển API.

Oliver Kingsley

tháng 4 23, 2025

Tải Postman Tiếng Việt Miễn Phí Ở Đâu?Quan điểm

Tải Postman Tiếng Việt Miễn Phí Ở Đâu?

Bạn có thể tải Postman Tiếng Việt miễn phí không? Mặc dù Postman thiếu hỗ trợ tiếng Việt gốc, các giải pháp thay thế vẫn tồn tại. Khám phá chúng và khám phá Apidog, một giải pháp thay thế Postman mạnh mẽ, thống nhất được thiết kế để hợp lý hóa toàn bộ quy trình làm việc API của bạn, bất kể ngôn ngữ.

Oliver Kingsley

tháng 4 22, 2025

Dành cho người mới bắt đầu: Cách sử dụng cơ bản của PostmanQuan điểm

Dành cho người mới bắt đầu: Cách sử dụng cơ bản của Postman

Postman là công cụ tiêu chuẩn cho việc thử nghiệm API, giúp nâng cao hiệu quả trong chiến lược API. Bài viết này giới thiệu cách sử dụng cơ bản của Postman, cho phép cả những người chưa từng sử dụng cũng có thể nắm bắt và sử dụng công cụ này hiệu quả thông qua các hướng dẫn có trong bài viết.

Minh Triết

tháng 3 11, 2025