今回の内容
第1話では、マイクロベースの開発とNVIDIA NIMについて解説しました。
第2話では具体的に必要なソフトウェアやハードウェア、デプロイ方法について解説します。
[NVIDIA NIMを活用したRAGのChatbotの開発]
第1話 マイクロサービスを利用したRAGシステム開発
第2話 RAGシステムで必要なソフトウェア/ハードウェアの構成とは?
第3話 RAGシステムのサンプルコード
RAGで必要なソフトウェア/ハードウェアのセットアップ
今回は第1話で示した最小限の構成でのチャットボットの構築に関して解説いたします。
マイクロサービスベースの開発ではLLM、埋め込みモデル、ベクトルデータベースをそれぞれコンテナで用意します。

NIMコンテナ
第3話で示すサンプルコードではLLMはmeta/llama-3.1-70b-instruct、文章埋め込みモデルはnvidia/nv-embedqa-e5-v5を使用します。
NIMでコンテナが提供されているこれらのモデルに必要なハードウェアリソース条件、ソフトウェア条件の最新情報はこちらで確認できます。
ソフトウェア条件(Release 1.3.0、2024/12/12)
・Linux operating systems(Ubuntu 20.04 or later recommended)
・NVIDIA Driver >= 560
・NVIDIA Docker >= 23.0.1
ハードウェア条件(Release 1.3.0、2024/12/12)
meta/llama-3.1-70b-instruct(Release 1.3.0、2024/12/12)
GPU |
Precision |
Profile |
# of GPUs |
Disk Space |
---|---|---|---|---|
H200 SXM | FP8 | Throughput | 1 | 67.87 |
H200 SXM | FP8 | Latency | 2 | 68.2 |
H200 SXM | BF16 | Throughput | 2 | 133.72 |
H200 SXM | BF16 | Latency | 4 | 137.99 |
H100 SXM | FP8 | Throughput | 2 | 68.2 |
H100 SXM | FP8 | Throughput | 4 | 68.72 |
H100 SXM | FP8 | Latency | 8 | 69.71 |
H100 SXM | BF16 | Throughput | 4 | 138.39 |
H100 SXM | BF16 | Latency | 8 | 147.66 |
H100 NVL | FP8 | Throughput | 2 | 68.2 |
H100 NVL | FP8 | Latency | 4 | 68.72 |
H100 NVL | BF16 | Throughput | 2 | 133.95 |
H100 NVL | BF16 | Throughput | 4 | 138.4 |
H100 NVL | BF16 | Latency | 8 | 147.37 |
A100 SXM | BF16 | Throughput | 4 | 138.53 |
A100 SXM | BF16 | Latency | 8 | 147.44 |
L40S | BF16 | Throughput | 4 | 138.49 |
nvidia/nv-embedqa-e5-v5(Release 1.2.0、2024/12/12)
GPU |
GPU Memory (GB) |
Precision |
---|---|---|
A100 PCIe | 40 & 80 | FP16 |
A100 SXM4 | 40 & 80 | FP16 |
H100 PCIe | 80 | FP16 |
H100 HBM3 | 80 | FP16 |
H100 NVL | 80 | FP16 |
L40s | 48 | FP16 |
A10G | 24 | FP16 |
L4 | 24 | FP16 |
コンテナのデプロイ方法
下記にmeta/llama-3.1-70b-instructをデプロイする方法を示します。
まず、NGCからコンテナをPullできるようにログインします。
$ docker login nvcr.io
Username: $oauthtoken
Password: <PASTE_API_KEY_HERE>
次に以下のコマンドでNVIDIA NIMのコンテナをPullします。
export NGC_API_KEY=<PASTE_API_KEY_HERE>
export LOCAL_NIM_CACHE=~/.cache/nim
mkdir -p "$LOCAL_NIM_CACHE"
docker run -it --rm \
--gpus all \
--shm-size=16GB \
-e NGC_API_KEY \
-v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \
-u $(id -u) \
-p 8000:8000 \
nvcr.io/nim/meta/llama-3.1-70b-instruct:latest
これでNIMのコンテナをデプロイすることができました。
curlコマンドを使用してモデルに質問をすることも可能です。
curl -X 'POST' \
'http://0.0.0.0:8000/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "meta/llama-3.1-70b-instruct",
"messages": [{"role":"user", "content":"Write a limerick about the wonders of GPU computing."}],
"max_tokens": 64
}'
同様の方法で文章埋め込みモデル(nvidia/nv-embedqa-e5-v5)のデプロイを実行することが可能です。
詳細はこちらをご確認ください。
ベクトルデータベース
今回は生成AIアプリケーション用に構築されたオープンソースのベクトルデータベースであるMilvusを使用します。
Milvusではコンテナが提供されており、今回はコンテナをデプロイして使用します。
Milvusの詳細はこちらをご確認ください。
ソフトウェア条件(version 2.5.x、2024/12/12)
Operating system | Software |
---|---|
Linux platforms |
Docker 19.03 or later Docker Compose 1.25.1 or later |
Hardware requirements
Component | Requirement | Recommendation |
---|---|---|
CPU |
Intel 2nd Gen Core CPU or higher Apple Silicon |
Standalone: 4 core or more Cluster: 8 core or more |
CPU instruction set |
SSE4.2 AVX AVX2 AVX-512 |
SSE4.2 AVX AVX2 AVX-512 |
RAM |
Standalone: 8G Cluster: 32G |
Standalone: 16G Cluster: 128G |
Hard drive | SATA 3.0 SSD or higher | NVMe SSD or higher |
コンテナのデプロイ方法
下記にMilvusのコンテナをデプロイする方法を示します。
こちらのコマンドでセットアップするとデフォルトではポート19530が使用されます。
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
下記のコマンドでコンテナのSTART、STOP、DELETEが可能です
#Start the Docker container
$ bash standalone_embed.sh start
#Stop the Docker container
$ bash standalone_embed.sh stop
#Delete the Docker container
$ bash standalone_embed.sh delete
次回 サンプルコード公開!
今回はマイクロサービスを利用したRAGのチャットボットを構築する際のハードウェア構成やソフトウェアのデプロイに関して解説しました。
3話目ではサンプルコードを元にこれらを活用したマイクロサービスベースの開発に関して解説いたします。
AI導入をご検討の方は、ぜひお問い合わせください
AI導入に向けて、弊社ではハードウェアのNVIDIA GPUカードやGPUワークステーションの選定やサポート、また顔認証、導線分析、骨格検知のアルゴリズム、さらに学習環境構築サービスなどを取り揃えています。お困りの際はぜひお問い合わせください。