1. Giới thiệu
Lớp học lập trình thực hành này sẽ hướng dẫn bạn cách triển khai và quản lý một mô hình AI được chứa trong vùng chứa trên Google Kubernetes Engine (GKE), bằng cách khai thác sức mạnh của các vi dịch vụ NVIDIA NIM™.
Hướng dẫn này được thiết kế dành cho các nhà phát triển và nhà khoa học dữ liệu đang muốn:
- Đơn giản hoá việc triển khai suy luận AI: Tìm hiểu cách sử dụng NIM dựng sẵn để triển khai các mô hình AI vào môi trường phát hành công khai trên GKE nhanh hơn và dễ dàng hơn.
- Tối ưu hoá hiệu suất trên GPU NVIDIA: Trải nghiệm thực tế với việc triển khai NIM sử dụng NVIDIA TensorRT để suy luận được tối ưu hoá trên GPU trong cụm GKE.
- Mở rộng quy mô khối lượng công việc suy luận AI: Khám phá cách mở rộng quy mô việc triển khai NIM dựa trên nhu cầu bằng cách sử dụng Kubernetes để tự động mở rộng quy mô và quản lý tài nguyên điện toán.
2. Kiến thức bạn sẽ học được
Khi kết thúc hướng dẫn này, bạn sẽ có kinh nghiệm về:
- Triển khai NIM trên GKE: Triển khai NVIDIA NIM dựng sẵn cho nhiều tác vụ suy luận vào cụm GKE.
- Quản lý việc triển khai NIM: Sử dụng các lệnh kubectl để quản lý, giám sát và mở rộng quy mô NIM đã triển khai.
- Mở rộng quy mô khối lượng công việc suy luận: Sử dụng các tính năng của Kubernetes để tự động mở rộng quy mô việc triển khai NIM dựa trên nhu cầu về lưu lượng truy cập.
3. Tìm hiểu về các thành phần
GPU trong Google Kubernetes Engine (GKE)
GPU cho phép bạn tăng tốc các khối lượng công việc cụ thể chạy trên các nút, chẳng hạn như học máy và xử lý dữ liệu. GKE cung cấp nhiều lựa chọn về loại máy cho cấu hình nút, bao gồm cả các loại máy có GPU NVIDIA H100, L4 và A100.
NVIDIA NIM
NVIDIA NIM là một tập hợp các vi dịch vụ suy luận dễ sử dụng để tăng tốc việc triển khai các mô hình nền tảng trên mọi đám mây hoặc trung tâm dữ liệu và giúp bảo mật dữ liệu của bạn.
NVIDIA AI Enterprise
NVIDIA AI Enterprise là một nền tảng phần mềm gốc trên đám mây, từ đầu đến cuối, giúp tăng tốc các quy trình khoa học dữ liệu và hợp lý hoá việc phát triển và triển khai các ứng dụng AI tạo sinh khác và trình hỗ trợ AI cấp sản xuất. Có sẵn thông qua GCP Marketplace.
4. Điều kiện tiên quyết
- Dự án: Một dự án trên Google Cloud đã bật tính năng thanh toán.
- Quyền: Đủ quyền để tạo cụm GKE và các tài nguyên liên quan khác.
- Helm: Helm là một trình quản lý gói cho Kubernetes.
- NVIDIA GPU Operator: Một tiện ích bổ sung Kubernetes tự động hoá việc quản lý tất cả các thành phần phần mềm NVIDIA cần thiết để cung cấp GPU.
- Khoá API NVIDIA: Nhấp vào đường liên kết này rồi làm theo hướng dẫn về cách tạo tài khoản và tạo Khoá API. Bạn sẽ cần có khoá API để tải vùng chứa NIM xuống.
- GPU NVIDIA: Một trong các GPU bên dưới sẽ hoạt động (Xin lưu ý rằng bạn có thể làm theo các bước này để yêu cầu tăng hạn mức nếu bạn không có đủ GPU)
- Không bắt buộc - GCloud SDK:** Trong trường hợp bạn không sử dụng Cloud Shell trong Cổng thông tin GCP, vui lòng đảm bảo bạn đã cài đặt và cấu hình Google Cloud SDK.
- Không bắt buộc - kubectl:** Trong trường hợp bạn không sử dụng Cloud Shell trong Cổng thông tin GCP, vui lòng đảm bảo bạn đã cài đặt và định cấu hình công cụ dòng lệnh kubectl.
5. Tạo cụm GKE có GPU
- Mở Cloud Shell hoặc thiết bị đầu cuối.
- Chỉ định các tham số sau:
export PROJECT_ID=<YOUR PROJECT ID> export REGION=<YOUR REGION> export ZONE=<YOUR ZONE> export CLUSTER_NAME=nim-demo export NODE_POOL_MACHINE_TYPE=g2-standard-16 export CLUSTER_MACHINE_TYPE=e2-standard-4 export GPU_TYPE=nvidia-l4 export GPU_COUNT=1
Xin lưu ý rằng bạn có thể phải thay đổi các giá trị cho NODE_POOL_MACHINE_TYPE, CLUSTER_MACHINE_TYPE và GPU_TYPE dựa trên loại Thực thể Compute và GPU mà bạn đang sử dụng.
- Tạo cụm GKE:
gcloud container clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --location=${ZONE} \ --release-channel=rapid \ --machine-type=${CLUSTER_MACHINE_TYPE} \ --num-nodes=1 - Tạo bộ nút GPU:
gcloud container node-pools create gpupool \ --accelerator type=${GPU_TYPE},count=${GPU_COUNT},gpu-driver-version=latest \ --project=${PROJECT_ID} \ --location=${ZONE} \ --cluster=${CLUSTER_NAME} \ --machine-type=${NODE_POOL_MACHINE_TYPE} \ --num-nodes=1
6. Định cấu hình khoá API NVIDIA NGC
Khoá API NGC cho phép bạn kéo hình ảnh tuỳ chỉnh từ NVIDIA NGC. Cách chỉ định khoá:
export NGC_CLI_API_KEY="<YOUR NGC API KEY>"
Đây là khoá đã được tạo, như một phần của Điều kiện tiên quyết.
7. Triển khai và kiểm thử NVIDIA NIM
- Tìm nạp biểu đồ Helm NIM LLM:
helm fetch https://helm.ngc.nvidia.com/nim/charts/nim-llm-1.3.0.tgz --username='$oauthtoken' --password=$NGC_CLI_API_KEY - Tạo không gian tên NIM:
kubectl create namespace nim - Định cấu hình bí mật:
kubectl create secret docker-registry registry-secret --docker-server=nvcr.io --docker-username='$oauthtoken' --docker-password=$NGC_CLI_API_KEY -n nim kubectl create secret generic ngc-api --from-literal=NGC_API_KEY=$NGC_CLI_API_KEY -n nim - Thiết lập cấu hình NIM:
cat <<EOF > nim_custom_value.yaml image: repository: "nvcr.io/nim/meta/llama3-8b-instruct" # container location tag: 1.0.0 # NIM version you want to deploy model: ngcAPISecret: ngc-api # name of a secret in the cluster that includes a key named NGC_CLI_API_KEY and is an NGC API key persistence: enabled: true imagePullSecrets: - name: registry-secret # name of a secret used to pull nvcr.io images, see https://kubernetes.io/docs/tasks/ configure-pod-container/pull-image-private-registry/ EOF - Đang khởi chạy việc triển khai NIM:
Xác minh rằng pod NIM đang chạy:helm install my-nim nim-llm-1.1.2.tgz -f nim_custom_value.yaml --namespace nimkubectl get pods -n nim - Kiểm thử việc triển khai NIM:
Sau khi xác minh rằng dịch vụ NIM của chúng tôi đã được triển khai thành công, chúng ta có thể đưa ra các yêu cầu suy luận để xem loại phản hồi mà chúng ta sẽ nhận được từ dịch vụ NIM. Để thực hiện việc này, chúng ta bật tính năng chuyển tiếp cổng trên dịch vụ để có thể truy cập vào NIM từ máy chủ cục bộ của chúng ta trên cổng 8000: Tiếp theo, chúng ta có thể mở một thiết bị đầu cuối hoặc thẻ khác trong Cloud Shell và thử yêu cầu sau:kubectl port-forward service/my-nim-nim-llm 8000:8000 -n nim Nếu bạn nhận được một đoạn hoàn thành cuộc trò chuyện từ dịch vụ NIM, điều đó có nghĩa là dịch vụ đang hoạt động như mong đợi!curl -X 'POST' \ 'http://localhost:8000/v1/chat/completions' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "messages": [ { "content": "You are a polite and respectful chatbot helping people plan a vacation.", "role": "system" }, { "content": "What should I do for a 4 day vacation in Spain?", "role": "user" } ], "model": "meta/llama3-8b-instruct", "max_tokens": 128, "top_p": 1, "n": 1, "stream": false, "stop": "\n", "frequency_penalty": 0.0 }'
8. Dọn dẹp
Xoá cụm GKE:
gcloud container clusters delete $CLUSTER_NAME --zone=$ZONE
9. Bước tiếp theo
Hãy xem các bài viết sau để biết thêm thông tin: