DataRobotのPlaygroundにLLMをホスティングしてみた

　　　　　　　　<img width="400" alt="naganoLLM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/8b145ad4-adbf-41a4-8023-36967f47fa6a.jpeg">

### 1. はじめに
こんにちは、DataRobotデータサイエンティストの長野です。普段はDataRobotでデータサイエンティストとして製造業・ヘルスケア業界のお客様を担当しています。技術面では生成AIプロジェクトのリードを担当しています。本記事では、DataRobotのBYOLLM（Bring Your Own LLM）と呼ばれる仕組みを用いて、Hugging Face Hubから取得したLLMをDataRobot環境にホスティングする方法をご紹介します。

なお、本ブログはウェビナー[「DataRobot × NVIDIAで加速する予測AIと生成AI~RAPIDSからNeMo Guardrailsまで」](https://www.datarobot.com/jp/webinars/datarobot-nvidia-20250227/)で解説した一部の内容を詳細化した記事となります。 是非アーカイブも合わせてご覧いただければと考えます。

### 2. LLMホスティングとは
LLMホスティングとは、外部のAPIに依存せず、LLMを自前の環境（DataRobot等）にデプロイして運用する手法です。関連した用語として、ローカルLLMと呼ばれる手法は自社のオンプレミス環境にLLMをホスティングすることを指します。近年、DeepSeekやTinySwallow1.5B等、オープンソースのLLMで高精度なモデルも出てきているので生成AIプロジェクトの一つの選択肢としてチェックしていただければと考えます。私が担当している製造業やヘルスケア業界ではセキュリティ要件の厳しいケースが多く、今後の生成AIプロジェクトにおける重要な選択肢の一つになってくると考えます。
LLMホスティングのメリットとデメリットは以下の通りです。

#### メリット
- コスト削減：API利用料が不要となるため、リクエストが多いユースケースでコスト削減につながる。
- セキュリティ向上：APIを経由せずに利用が可能。ローカルLLMの場合は閉域網での利用が可能。
- 柔軟な運用：自社環境に合わせたカスタマイズやチューニングが自由に行える。
- 運用監視の容易さ：外部ベンダーによるLLMの更新や仕様変更の影響を受けない。

#### デメリット
- 初期設定の複雑さ：環境構築やモデルの最適化に手間がかかる。
- 運用負荷：ハードウェア・インフラ管理に運用リソースが必要。
- パフォーマンスの差：商用モデルと比較し、選択したGPUサイズによっては精度や応答速度で劣る場合がある。
- コンプライアンスの懸念：コンプライアンステスト等が不十分な可能性がある。

DataRobot上でLLMをホスティングする際は、GPU環境を扱えるためデメリットである初期設定の複雑さや、運用負荷を軽減できる点がポイントです。今回は、DataRobotのPlayGround環境上で任意のLLMを実行できる仕組みである「BYOLLM（Bring Your Own LLM）」を利用して、具体的なホスティング手順をご紹介します。

### 3. LLMホスティング実行手順
以下は、Hugging Faceから取得した[cyberagent/DeepSeek-R1-Distill-Qwen-14B-Japanese](https://huggingface.co/cyberagent/DeepSeek-R1-Distill-Qwen-14B-Japanese)を用いて、DataRobot上でLLMをホスティングする手順です。詳細は[「ドキュメント：Hugging FaceハブからのLLMのデプロイ」](https://docs.datarobot.com/ja/docs/workbench/nxt-registry/nxt-model-workshop/nxt-open-source-textgen-template.html)をご参照ください。

最初にDataRobotのNextGenの画面からモデルワークショップ→モデルの追加を押します。
![naganoLLM2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/08e2527f-187f-4d1a-8ec0-f0d88156ede1.png)

基本環境として[GenAI vLLM Inference Server]を選択します。こちらの基本環境を用いることで、複雑な環境構築なしですぐにHuggingFace HubからLLMをホスティングすることが可能です。このように基本環境はプリセットのものをお使いいただくことをおすすめしますが、ご自身で自由にカスタマイズした環境を構築することも可能です。次に[GitHubリポジトリ](https://github.com/datarobot/datarobot-user-models/blob/master/model_templates/gpu_vllm_textgen/README.md)から関連するアセットをダウンロードしていただきます。リポジトリ内のgpu_vllm_textgenフォルダ内の以下の4つのファイルを下記のようにドラッグ＆ドロップします。

- custom.py
- engine_config.json
- requirements.txt
- runtime.yaml　

![naganoLLM3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/0e682feb-de50-4066-a349-a6e6ce481e95.png)

次にengine_config.jsonがデフォルトだと**meta-llama/Llama-3.1-8B-Instruct**をホスティングする仕様になっているので、今回は**cyberagent/DeepSeek-R1-Distill-Qwen-14B-Japanese**に書き換えてください。最初は難しそうに見えるかもしれませんが、モデル毎に変更が必要なのは基本的にengine_config.jsonと後述するGPU環境のみです。

![naganoLLM4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/cd258b34-d8c1-441e-b6ee-cf017502c2c3.png)

その後にHuggingFaceTokenとシステムプロンプトの設定をします。HuggingFaceTokenは、Hugging Faceのアカウントの設定画面から取得可能です。初回利用時は、事前に用意しておくことをおすすめします。システムプロンプトの設定は任意のオプションです。

![naganoLLM5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/b10ce4ab-b8dd-491e-ab7d-9f2ffd3b2059.png)

最後にリソースバンドルを設定します。どのリソースを選ぶかの参考として[ドキュメントに記載の計算式](https://docs.datarobot.com/ja/docs/workbench/nxt-registry/nxt-model-workshop/nxt-open-source-textgen-template.html#configure-the-custom-model-resources)をご活用ください。ドキュメントに記載のLlama−3.1-8bの場合はLバンドル、今回のケースではP=14, Q=16で計算するとM≒33.6GBなのでVRAMが48GBのXLサイズを選定しました。ブログ執筆時点ではVRAM 384GB（5XL）まであるので、計算上は160Bクラスのモデルもデプロイ可能です（参考値のため実際にはテストをする必要があります）。

![naganoLLM6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/049c3fd9-d9c9-473e-96ef-55e1855e0172.png)

モデルの登録とデプロイをしていただき、手順に問題がなければLLMのホスティングが完了です。コンソールの画面から普段お使いいただいているデプロイモデルと同様に、LLMの運用監視やAPI連携が可能です。

![naganoLLM7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/aaee71cb-d0df-40cd-8720-ea8ba5f6b0a2.png)

続いて、BYOLLMの仕組みを用いてPlayGround上でLLMを検証します。下記の通り、「デプロイ済みLLMを追加」をクリックしてください。
![naganoLLM8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/9fa335af-b74a-467b-b083-3692bcf60b04.png)

下記のポップアップが表示されるのでデプロイ名から先ほどデプロイしたLLMを選定してください。プロンプト列はpromptText、ターゲット列はLLMホスティングの設定で決めたターゲット名を入力してください（今回のケースではtarget）。

![naganoLLM9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/8ea284f4-dde3-4c4e-afb4-fea4e992f141.png)

成功するとLLMの中にDeployed LLMという項目が表示されるので、設定すると下記の通りホスティングされたLLMを使うことができます。インターフェース上は分かりにくいですが、GPT系のLLM等とは違い、DataRobotのGPU環境上で構築されたLLMと対話しています。

![naganoLLM10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/924ff7a7-737b-4eb7-a17f-db79574abdd3.png)

### 4. LLMホスティングの次のステップ
ホスティングしたLLMは、DataRobotにプリインストールされている商用LLMと同様の操作感で手軽に検証や評価が可能です。現時点で、オープンソースLLMは商用LLMに精度や性能面で完全には及ばないものの、今後の精度改善に向けて次のようなアプローチを検討できます。
- システムプロンプトの最適化
- RAGの活用
- 自社データを用いたファインチューニング

これらの技術要素の組み合わせや問題設定次第では、LLMホスティングが最適となるケースもあります。DataRobotではRAGの構築やシステムプロンプトはもちろん、GPU環境を用いたファインチューニングも可能なため、是非検討いただければと思います。

### 5. まとめ
 本記事では、DataRobotのBYOLLMを活用し、Hugging Face Hubで公開されているLLMをDataRobot環境にホスティングする手順を解説しました。オープンソースLLMは商用LLMと比較すると現時点で精度や性能面では完全に同等とは言えませんが、コスト削減やセキュリティ向上、自社環境への柔軟な適応といった面で優位なケースも多くあります。さらに、システムプロンプトやRAG、自社データによるファインチューニングを活用すれば、実務で十分に使えるレベルまで性能を引き上げられる可能性があります。

DataRobotでは、オープンソースLLMのホスティングと商用LLMの利用、両アプローチを簡単に比較検証できます。今回の内容が、皆様の生成AIプロジェクトの新たな選択肢としてお役に立てば幸いです。