0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVIDIA LaunchPadを通してNIMを体感する

Posted at

NVIDIA LaunchPad

NVIDA LaunchPadはお手軽にNVIDIA Certified System上で同社のGPU、AIソフトウェア、NIMなどを試すことができるプログラムです。時間は限られますが雰囲気を体感できるのでこれが無料とはありがたい機会です。備忘録としてここに書いていますが宣伝されて困ることはないのかと心配になります。

試したハンズオンラボ

今回はこのプログラムを通して「5分でLLMをデプロイ!」を試しました。実機環境を確認したり、英語を目を皿にして読んだりしていたので5分では終わりませんでした。とはいえ時間制限で折角の環境が消えてしまうので怠惰な私も終えることができました。

利用までの流れ

利用は非常に簡単です。使いたいラボを選び、Start Nowで必要事項を埋めていきます。途中メールのVerification Codeを入れるところがありますので、受信メールを確認して入れていきます。
image.png

その後に利用が承認されると「Congraturation!」と環境にアクセスするURLがメールで届きます。

インストラクションと環境へのアクセス

メールに貼り付けてあるURLにアクセスしてログインに成功するとWelcome画面が出迎えてくれます。
image.png

さらにGet Startedしますとハンズオンのインストラクションに進みます。もうこのまま読み進めていけば解説してくれながらハンズオンを進めることができます。
image.png

環境へのアクセスにはCode Server IDEを使うか、SSH Setupで鍵を設定して環境に繋ぐこともできます。
image.png

Code Server IDEは下記のような画面です。真ん中の上側がインストラクション、下にターミナルが開いています。Get Started前のインストラクションに従ってこちらのIDEに流れていきます。
image.png

鍵の設定画面はこちらです。SSH Key Genして公開鍵を入れてあげると接続コマンドが出てきます。
image.png

Metricsを選ぶとGrafanaのDashboardが出てきてリソース状況を把握できます。
image.png

NVIDIA Inference MicroserviceはLLMのモデルエンジン、ランタイム、APIアクセスするためのサーバーで構成されているNIM(NVIDIA Inference Microservices)のコンテナを走らせた後に、モデルとのInteractionのために使っていきます。

User Managementで他のユーザーを呼ぶこともできます。
image.png

払い出された環境

払い出された環境は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とお話ししていきます。
image.png

おわりに

このようにNVIDIA LaunchPadを通して手軽にNVIDIAのテクノロジーに触れることができます。他のラボも試したくなりながらターミナルを閉じ、ラボが使えたことに感謝しつつ、こちらの筆をおくことにします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?