NVIDIA LaunchPad
NVIDA LaunchPadはお手軽にNVIDIA Certified System上で同社のGPU、AIソフトウェア、NIMなどを試すことができるプログラムです。時間は限られますが雰囲気を体感できるのでこれが無料とはありがたい機会です。備忘録としてここに書いていますが宣伝されて困ることはないのかと心配になります。
試したハンズオンラボ
今回はこのプログラムを通して「5分でLLMをデプロイ!」を試しました。実機環境を確認したり、英語を目を皿にして読んだりしていたので5分では終わりませんでした。とはいえ時間制限で折角の環境が消えてしまうので怠惰な私も終えることができました。
利用までの流れ
利用は非常に簡単です。使いたいラボを選び、Start Nowで必要事項を埋めていきます。途中メールのVerification Codeを入れるところがありますので、受信メールを確認して入れていきます。
その後に利用が承認されると「Congraturation!」と環境にアクセスするURLがメールで届きます。
インストラクションと環境へのアクセス
メールに貼り付けてあるURLにアクセスしてログインに成功するとWelcome画面が出迎えてくれます。
さらにGet Startedしますとハンズオンのインストラクションに進みます。もうこのまま読み進めていけば解説してくれながらハンズオンを進めることができます。
環境へのアクセスにはCode Server IDEを使うか、SSH Setupで鍵を設定して環境に繋ぐこともできます。
Code Server IDEは下記のような画面です。真ん中の上側がインストラクション、下にターミナルが開いています。Get Started前のインストラクションに従ってこちらのIDEに流れていきます。
鍵の設定画面はこちらです。SSH Key Genして公開鍵を入れてあげると接続コマンドが出てきます。
Metricsを選ぶとGrafanaのDashboardが出てきてリソース状況を把握できます。
NVIDIA Inference MicroserviceはLLMのモデルエンジン、ランタイム、APIアクセスするためのサーバーで構成されているNIM(NVIDIA Inference Microservices)のコンテナを走らせた後に、モデルとのInteractionのために使っていきます。
User Managementで他のユーザーを呼ぶこともできます。
払い出された環境
払い出された環境はUbuntuでした。
Welcome to Ubuntu 22.04.4 LTS
Kubernetesが動いています。
$ kubectl version
Client Version: v1.30.6
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.6
Nodeは1つです。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
try-xxxxx-gpu01 Ready control-plane,worker 21h v1.30.6
どのようなリソースを使っているのかを見るためにkubectl describe nodes try-xxxxx-gpu01
で中身を見てみました。GPU Operatorが動いています。
Non-terminated Pods: (20 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
default dnsutils 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
k8s-nfs-storage nfs-subdir-external-provisioner-5cf86bb965-mmzxx 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system calico-kube-controllers-65dcc554ff-4sfg2 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system calico-node-tq8m8 250m (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system coredns-55cb58b774-9tswl 100m (0%) 0 (0%) 70Mi (0%) 170Mi (0%) 21h
kube-system coredns-55cb58b774-wbcf5 100m (0%) 0 (0%) 70Mi (0%) 170Mi (0%) 21h
kube-system etcd-try-57516-gpu01 100m (0%) 0 (0%) 100Mi (0%) 0 (0%) 21h
kube-system kube-apiserver-try-57516-gpu01 250m (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system kube-controller-manager-try-57516-gpu01 200m (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system kube-proxy-pc55d 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-system kube-scheduler-try-57516-gpu01 100m (0%) 0 (0%) 0 (0%) 0 (0%) 21h
nvidia-gpu-operator gpu-feature-discovery-tvmd4 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
nvidia-gpu-operator gpu-operator-1738579739-node-feature-discovery-gc-f8657fcb76lkq 10m (0%) 0 (0%) 128Mi (0%) 1Gi (0%) 21h
nvidia-gpu-operator gpu-operator-1738579739-node-feature-discovery-master-76bb7v4ls 100m (0%) 0 (0%) 128Mi (0%) 4Gi (0%) 21h
nvidia-gpu-operator gpu-operator-1738579739-node-feature-discovery-worker-jcwx7 5m (0%) 0 (0%) 64Mi (0%) 512Mi (0%) 21h
nvidia-gpu-operator gpu-operator-bf4cf9db-g6hwg 200m (0%) 500m (0%) 100Mi (0%) 350Mi (0%) 21h
nvidia-gpu-operator nvidia-dcgm-exporter-gl9dp 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
nvidia-gpu-operator nvidia-device-plugin-daemonset-ntkc7 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
nvidia-gpu-operator nvidia-mig-manager-ck6gr 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
nvidia-gpu-operator nvidia-operator-validator-tcdtp 0 (0%) 0 (0%) 0 (0%) 0 (0%) 21h
割り当てられたリソースは下記のような感じです。
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1415m (0%) 500m (0%)
memory 660Mi (0%) 6322Mi (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
nvidia.com/gpu 0 0
GPUのアサインも確認します。H100、そしてNVLと書かれていることから高速GPU間接続技術であるNVLinkで接続されていることがわかります。
$ nvidia-smi -L
GPU 0: NVIDIA H100 NVL (UUID: GPU-b4eb1ff2-05b9-568b-02c4-448bcda536b0)
GPU 1: NVIDIA H100 NVL (UUID: GPU-4fcfdaf5-9818-0573-6f3b-b6d1af9d55ea)
GPU 2: NVIDIA H100 NVL (UUID: GPU-94db65b2-444b-2551-1894-73b305cc3392)
GPU 3: NVIDIA H100 NVL (UUID: GPU-feb7fdf6-757a-e218-8cff-dd08fa2be886)
GPU 4: NVIDIA H100 NVL (UUID: GPU-fb183662-2555-9fc2-d11e-176f6ad889c3)
GPU 5: NVIDIA H100 NVL (UUID: GPU-b33a9e8f-11d9-903c-072d-f9b718a3a42a)
GPU 6: NVIDIA H100 NVL (UUID: GPU-84fcdaa8-6336-fc31-a14d-a986e442dce2)
GPU 7: NVIDIA H100 NVL (UUID: GPU-b46d098c-c6d0-44ac-4a14-1a83022fa77c)
ハンズオンの実施
ハンズオン自身は手順に従い進めていきます。基本的な流れは下記でした。
NVIDIA API catalogからAPIキーの発行
ここからllama3-8bのモデルへのAPIキーを生成します。
ダウンロード済みのコンテナを起動
ご丁寧にコンテナイメージはダウンロード済みです。手順のコマンドをぺちっと打ちます。
$ export CONTAINER_NAME=meta-llama3-8b-instruct
docker run -it --rm --name=$CONTAINER_NAME \
--gpus all \
-e NGC_API_KEY \
-v ~/nim-cache:/opt/nim/.cache \
-p 8000:8000 \
--shm-size=10.24gb \
nvcr.io/nim/meta/llama3-8b-instruct:1.0.0
===========================================
== NVIDIA Inference Microservice LLM NIM ==
===========================================
NVIDIA Inference Microservice LLM NIM Version 1.0.0
Model: nim/meta/llama3-8b-instruct
Container image Copyright (c) 2016-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
This NIM container is governed by the NVIDIA AI Product Agreement here:
https://www.nvidia.com/en-us/data-center/products/nvidia-ai-enterprise/eula/.
A copy of this license can be found under /opt/nim/LICENSE.
The use of this model is governed by the AI Foundation Models Community License
here: https://docs.nvidia.com/ai-foundation-models-community-license.pdf.
LLMとお話し
起動した後はNVIDIA Inference MicroserviceからNotebookを開いて、用意されたコマンドでLLMとお話ししていきます。
おわりに
このようにNVIDIA LaunchPadを通して手軽にNVIDIAのテクノロジーに触れることができます。他のラボも試したくなりながらターミナルを閉じ、ラボが使えたことに感謝しつつ、こちらの筆をおくことにします。