NVIDIA NIM là gì?
NVIDIA NIM (viết tắt của NVIDIA Inference Microservices) là một công nghệ do NVIDIA phát triển, giúp triển khai các mô hình trí tuệ nhân tạo (AI) dưới dạng dịch vụ web (microservice) một cách dễ dàng, nhanh chóng và tối ưu trên GPU.
Nói đơn giản, NIM giống như một “chiếc hộp” chứa:
- Mô hình AI đã huấn luyện sẵn
- Các công cụ tối ưu hiệu suất (TensorRT, Triton Inference Server…)
- Giao diện API tiêu chuẩn (giống OpenAI)
Để có thể sử dụng NVIDIA NIM cho dự án của mình, bạn có nhiều cách:
- Truy cập đến dịch vụ của NVIDIA thông qua việc đăng ký sử dụng bộ phần mềm NVIDIA AI Enterprise (có phí).
- Thuê nền tảng cloud của bên thứ ba như AWS (Amazon Web Services), Microsoft Azure,…
Tuy nhiên, nếu bạn là học sinh, sinh viên hay nhà nghiên cứu cá nhân không thể chi trả các chi phí trên mà vẫn muốn trải nghiệm NVIDIA NIM, và bạn đã có sẵn GPU NVIDIA (cụ thể là các dòng GeForce RTX như 20 Series, 30 Series, 40 Series và mới nhất là 50 Series), thì bạn có thể áp dụng cách triển khai cục bộ. Chỉ với một vài dòng lệnh, bạn có thể tải về, chạy và tương tác với những mô hình AI mạnh mẽ như chatbot, nhận dạng giọng nói, xử lý hình ảnh, phân tích dữ liệu,… ngay trên máy tính cá nhân của bạn và tôi sẽ hướng dẫn bạn ở những phần tiếp theo.
Tại sao lại chọn NIM?
Lý do khiến NVIDIA NIM được đánh giá cao chính là khả năng rút ngắn khoảng cách giữa mô hình AI và ứng dụng thực tế. Thay vì phải viết hàng trăm dòng mã để xử lý mô hình, kết nối GPU, tạo server, tối ưu tốc độ… thì với NIM, mọi thứ đã được tích hợp sẵn.
Một số ưu điểm nổi bật bao gồm:
- Dễ sử dụng: Cài đặt và triển khai chỉ trong vài phút.
- Hiệu suất cao: Tối ưu GPU NVIDIA để đạt tốc độ suy luận nhanh.
- Chuẩn hóa API: Có thể tích hợp vào bất kỳ ứng dụng nào qua REST API.
- Đa dạng mô hình: Từ ngôn ngữ, hình ảnh, âm thanh đến embedding, phân loại…
- Miễn phí cho mục đích học tập – nghiên cứu: Dễ dàng tiếp cận qua NVIDIA NGC Catalog.
NIM hoạt động như thế nào?
Về bản chất, mỗi NIM là một microservice AI độc lập, có thể hoạt động như một máy chủ inference. Người dùng gửi yêu cầu đến NIM thông qua HTTP API (giống như gọi API OpenAI), NIM xử lý yêu cầu bằng mô hình AI bên trong, sau đó trả lại kết quả.
Chúng ta có thể hình dung như sau:
Cách cài đặt và sử dụng NIM
Điều kiện để cài đặt và sử dụng NVIDIA NIM (khi không có tài khoản NVIDIA AI Enterprise):
- Docker
- Hệ điều hành Linux hoặc WSL2 (Window Subsystem for Linux 2)
- Tài khoản NGC
- Máy tính có GPU NVIDIA
- NVIDIA Container Toolkit
Cài đặt:
Tải và cài đặt Docker Desktop, trong quá trình cài đặt đảm bảo tùy chọn “Use WSL 2 instead of Hyper-V “. Sau khi cài đặt xong khởi động Docker Desktop nó sẽ tự động cấu hình với WSL2.
*Lưu ý: Khi cài Docker sẽ mặc định lưu vào ổ C và đồng thời cũng sẽ lưu trữ các container images bạn sẽ tải sau này vào đây, vậy nên để tránh bị đầy ổ C các bạn hãy chuyển ổ lưu trữ ngay từ bước này đi nhé!
Cài đặt Driver NVIDIA tương thích và kiểm tra với lệnh:
nvidia-smi
Nếu xuất hiện 1 khung thể hiện các thông tin như dưới đây chứng tỏ rằng bạn đã sẵn sàng với bước tiếp theo
Bước tiếp theo là cài đặt NVIDIA Container Toolkit theo đường link hướng dẫn sau:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#configuring-containerd-for-kubernetes
Sau khi cài đặt xong hãy kiểm tra xem nó đã hoạt động chưa bằng dòng lệnh:
docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
Lệnh này sẽ chạy container test xem GPU đã được dùng hay chưa nếu có sẽ trả kết quả là 1 khung bảng như câu lệnh “nvidia-smi ”
Cài đặt xong NVIDIA Container Toolkit là bạn đã sẵn sàng để sử dụng NVIDIA NIM
Cách sử dụng
Đầu tiên vào trang https://ngc.nvidia.com/ , đăng nhập vào bằng tài khoản của bạn, nếu chưa có hãy tạo tài khoản (miễn phí) và sau đó đăng nhập vào
Sau khi đăng nhập thành công, vào phần tài khoản > Set up > Generate API Key:
Tạo xong hãy copy key đó, đừng chia sẻ với ai và lưu ở nơi chỉ bạn mới có thể biết. Vào lại Terminal của Ubuntu hoặc Terminal nào bạn đang sử dụng để làm việc có sử dụng WSL 2, khai báo key của bạn:
export NGC_API_KEY=<API_KEY_CUA_BAN>
Kiểm tra xem đã nhập key thành công hay chưa:
echo $NGC_API_KEY
Quay lại trang NGC, ở đây sẽ chứa vô số mô hình đã được NVIDIA huấn luyện sẵn, bạn có thể chọn mô hình dựa theo mục đích của bạn. Ở đây tôi sẽ ví dụ với mô hình FourCastNet đây là một mô hình dự báo thời tiết của NVIDIA.
Sử dụng lệnh “docker pull ” để tải mô hình về máy:
docker pull <mo_hinh_ban_chon>
Ví dụ như mô hình FourCastNet ở trên sẽ là:
docker pull nvcr.io/nim/nvidia/fourcastnet:1.0.0
Đợi một tí để mô hình tải về máy của bạn, sau khi tải xong hãy chạy mô hình đó bằng lệnh:
docker run --rm --runtime=nvidia --gpus all --shm-size 4g \ -p 8000:8000 \ -e NGC_API_KEY \ nvcr.io/nim/nvidia/fourcastnet:1.0.0
Kết quả sẽ như thế này:
Tuy nhiên, lệnh này sẽ chiếm command line của bạn, và bạn sẽ không làm được gì nữa trừ khi tắt nó. Vậy, để vừa chạy mô hình vừa làm việc khác với command line sẽ như nào? Rất dễ, bạn chỉ việc thêm “ -d “ ngay sau docker run, mô hình sẽ hoàn toàn chạy ngầm và sẽ chỉ trả về cho các bạn một dãy kí tự.
Để xem container hoạt động hay chưa bạn có thể kiểm tra bằng lệnh:
docker ps
* docker ps sẽ hiển thị toàn bộ các container đang chạy trên máy của bạn
Việc sử dụng ” -d ” để chạy ngầm sẽ giúp bạn có thể sử dụng tiếp terminal mà không bị gián đoạn nhưng cũng mang lại một số hạn chế như:
- Bạn sẽ không xem trực tiếp được output (log), điều này sẽ khó khăn cho việc theo dõi ngay lập tức các sự kiện, lỗi, hoặc thông báo mà ứng dụng trong container tạo ra.
- Nếu container của bạn không khởi động được hoặc gặp lỗi ngay khi vừa chạy, việc chạy -d có thể khiến bạn không nhận ra ngay vấn đề. Container có thể khởi động rồi thoát ngay lập tức mà bạn không thấy lỗi gì trên màn hình.
- Ngoài ra, vì container chạy ngầm, bạn có thể dễ dàng quên mất rằng mình đã khởi động nó. Điều này có thể dẫn đến việc có nhiều container không cần thiết chạy chiếm tài nguyên hệ thống (CPU, RAM, disk).
Một số mô hình phổ biến có sẵn trong NVIDIA NIM
1. Dự báo thời tiết: FourCastNet
2. Chuyển đổi văn bản sang giọng nói (Text to Speech): TTS FastPitch HifiGAN Riva
3. Chuyển đổi giọng nói thành văn bản (Speech to Text): Parakeet 0.6b CTC en-US NIM, ASR Parakeet CTC Riva 1.1b
4. Computer Vision:
· Phân tích video (Video Analytics): NV-CLIP
· Phân đoạn hình ảnh (Image Segmentation): Llama-3.2-11B-Vision-Instruct
Kết luận
NVIDIA NIM là một bước đột phá quan trọng giúp đưa trí tuệ nhân tạo đến gần hơn với mọi người từ học sinh, sinh viên đến các nhà nghiên cứu và các lập trình viên trẻ chưa có kinh nghiệm. Nhờ thiết kế tối ưu, triển khai đơn giản chỉ bằng một dòng lệnh Docker, giờ đây học sinh, sinh viên, lập trình viên trẻ, nhà nghiên cứu có thể trực tiếp sử dụng các mô hình AI tiên tiến và các mô hình thị giác máy tính, triển khai các ứng dụng AI mạnh mẽ ngay trên máy tính cá nhân, hoàn toàn miễn phí mà không cần lo tốn chi phí hạ tầng.
Với NVIDIA NIM, bạn không chỉ học AI – bạn có thể thực sự xây dựng nó.
Bên cạnh đó, nếu bạn là một tổ chức hoặc doanh nghiệp đang tìm kiếm giải pháp triển khai AI ở quy mô lớn, tích hợp với Kubernetes, sử dụng nhiều GPU và khả năng kiểm soát tài nguyên hệ thống, vui lòng tham khảo thêm bài viết:
NVIDIA NIM: Vi dịch vụ suy luận tối ưu hóa cho triển khai mô hình AI quy mô lớn