H100 GPUでOllamaを使ってLLMを最大限に効率よく運用する
紹介
この記事は、DigitalOceanが提供するH100 GPU上でOllamaを使用して大規模言語モデルを実行するためのガイドです。DigitalOceanのGPUドロップレットは、AI/MLのトレーニング、推論、深層学習、高性能コンピューティング(HPC)、データ分析、グラフィックスレンダリングなどの計算集約型タスクに対する強力でスケーラブルなソリューションを提供します。これらのGPUは要求の厳しいワークロードを処理するように設計されており、GPUドロップレットは企業が不要なコストを管理することなく、オンデマンドでAI/ML業務を効率的にスケールすることを可能にします。シンプルさ、柔軟性、手頃さを提供するDigitalOceanのGPUドロップレットは、迅速な展開と使いやすさを確保し、開発者やデータサイエンティストに最適です。
現在、NVIDIA H100 GPUのサポートにより、ユーザーはAI/ML開発を加速し、アプリケーションのテスト、デプロイ、および最適化をシームレスに行うことができるようになりました。これは、従来のプラットフォームに通常必要とされる広範なセットアップやメンテナンスを必要としません。Ollamaは、さまざまな事前トレーニング済みモデルへのアクセスを提供し、異なるオペレーティングシステムでの簡単なインストールとセットアップを可能にし、アプリケーションやワークフローへのシームレスな統合のためのローカルAPIを公開するオープンソースツールです。ユーザーはLLMをカスタマイズおよび微調整し、ハードウェアアクセラレーションでパフォーマンスを最適化し、直感的なインタラクションのためのインタラクティブなユーザーインターフェースの恩恵を受けることができます。
前提条件
H100 GPUへのアクセス: オンプレミスのハードウェアを使用するか、DigitalOceanのGPUドロップレットを使用して、NVIDIA H100 GPUへのアクセスを確保してください。
サポートされているフレームワーク: PythonとLinuxコマンドに対する知識。
-
CUDAおよびcuDNNがインストールされています: 最適なGPUパフォーマンスのためにNVIDIA CUDAおよびcuDNNライブラリがインストールされていることを確認してください。
十分なストレージとメモリ: 大規模なモデルのデータセットや重みを処理するために、十分なストレージとメモリを確保してください。
LLMの基本理解:大型言語モデルとその構造についての基礎的な理解が、効果的に管理および最適化するために必要です。
これらの前提条件は、H100 GPUでOllamaを使用してLLMを実行する際に、スムーズで効率的な体験を保証するのに役立ちます。
オラマとは何ですか?
Ollamaは、その広大な言語モデルライブラリから大規模な言語モデルをダウンロードする方法を提供しています。ライブラリにはLlama3.1、Mistral、Code Llama、Gemmaなどが含まれています。Ollamaはモデルの重み、設定、およびデータを1つのパッケージにまとめ、Modelfileで指定します。Ollamaはカスタムまたは既存の言語モデルを作成、インポート、および使用するための柔軟なプラットフォームを提供しており、チャットボットやテキスト要約などの作成に最適です。プライバシーを重視し、Windows、macOS、Linuxとの統合がスムーズで、無料で使用できます。Ollamaはまた、ユーザーがローカルでモデルを簡単にデプロイできるようにします。さらに、プラットフォームはREST APIを介してリアルタイムのインタラクションもサポートしています。これは、LLM駆動のウェブアプリおよびツールに最適です。Dockerの動作方法に非常に似ています。Dockerを使うと、中央ハブからさまざまなイメージを取得してコンテナで実行できます。さらに、OllamaはModelfileを作成することでモデルをカスタマイズすることも可能です。以下はModelfileを作成するためのコードです:
From llama2
Set the temperature PARAMETER temperature 1
Set the system Prompt
SYSTEM """ You are a helpful teaching assistant created by DO.
Answer questions asked based on Artificial Intelligence, Deep Learning. """
次に、カスタムモデルを実行します。
Ollama create MLexp \-f ./Modelfile
Ollama run MLexp
NVIDIA H100 GPUの力
- H100は、Nvidiaの最も強力なGPUであり、人工知能アプリケーションのために特別に設計されています。800億のトランジスタを搭載しており、A100の6倍に相当し、市場の他のGPUよりもはるかに高速で大規模なデータセットを処理することができます。
- 皆さんご存知のように、AIアプリケーションはデータを大量に必要とし、計算コストが高いです。この膨大な作業量を管理するために、H100は最良の選択肢とされています。
- H100は第4世代テンソルコアとFP8精度のトランスフォーマーエンジンを備えています。H100は、以前のモデルと比較して浮動小数点演算毎秒(FLOPS)を3倍にし、60テラフロップの倍精度(FP64)コンピューティングを提供します。これは、HPCタスクにおける正確な計算にとって重要です。また、既存のコードに変更を加えることなく、TF32精度を使用して1ペタフロップのスループットで単精度行列乗算を実行できるため、開発者にとって使いやすいものとなっています。
- H100は、動的プログラミングタスクのパフォーマンスを大幅に向上させるDPX命令を導入し、A100よりも7倍、DNA配列アライメントのような特定のアルゴリズムに対してはCPUよりも40倍速いパフォーマンスを達成しています。
- H100 GPUは、必要な計算能力を提供し、GPUあたり毎秒3テラバイト(TB/s)のメモリ帯域幅を実現しています。この高性能により、大規模データセットを効率的に処理することができます。
- H100は、NVLinkやNVSwitch™などの技術を通じてスケーラビリティをサポートしており、複数のGPUが効果的に連携して作業できるようにしています。
GPUドロップレット
DigitalOceanのGPUドロップレットは、AI/MLワークロードのためのシンプルで柔軟かつコスト効果の高いソリューションを提供します。これらのスケーラブルなマシンは、AI/MLモデルのトレーニングと推論タスクを信頼性高く実行するのに最適です。さらに、DigitalOceanのGPUドロップレットは高性能コンピューティング(HPC)タスクにも適しており、シミュレーション、データ分析、および科学計算などのさまざまなユースケースに対応する汎用性の高い選択肢となっています。今すぐDigitalOceanアカウントにサインアップしてGPUドロップレットをお試しください。
なぜH100 GPU上でOllamaを使ってLLMを実行するのか?
Ollamaを効率的に実行するには、NVIDIAのGPUが必要で、トラブルなしに動作させることができます。CPUユーザーは、遅い応答を期待できます。
- H100はその高度なアーキテクチャにより、優れた計算能力を提供し、LLMの効率を大幅に向上させるのに役立ちます。
- Ollamaはユーザーが特定のニーズに合わせてLLMをカスタマイズし、微調整できるようにします。これにより、プロンプトエンジニアリング、少数ショット学習、望ましい結果にモデルを合わせるためのカスタマイズされた微調整が可能になります。OllamaとH100 GPUを組み合わせることで、開発者や研究者のためのモデル推論とトレーニング時間が短縮されます。
- H100 GPUは、Falcon 180bのようなモデルを処理する能力を持っており、チャットボットやRAGアプリケーションなどの生成AIツールを作成および展開するのに理想的です。
- H100 GPUは、テンサーコアなどのハードウェア最適化が施されており、特に行列が多い操作に関して、LLMを扱うタスクを大幅に加速します。
H100 GPUを使用したOllamaのセットアップ
OllamaはWindows、macOS、またはLinuxと非常に互換性があります。ここでは、私たちのGPU DropletsがLinux OSに基づいているため、Linuxコードを使用しています。
ターミナルで以下のコードを実行してGPUの仕様を確認してください。
nvidia-smi
次に、同じターミナルを使ってOllamaを最初にインストールしてみます。
curl \-fsSL https://ollama.com/install.sh | sh
これにより、Ollamaのインストールが即座に開始されます。
インストールが完了したら、どのLLMでも取得して、Llama 3.1、Phi3、Mistral、Gemma 2などのモデルで作業を始めることができます。
モデルを実行してチャットするために、以下のコードを実行します。必要に応じてモデルを変更してください。Ollamaを使ってモデルを実行するのは非常に簡単で、ここでは強力なH100を使用しているため、レスポンスを生成するプロセスが迅速かつ効率的になります。
ollama run example\_model
ollama run qwen2:7b
「ollamaアプリに接続できませんでした。そのアプリは実行中ですか?以下のコードを使用してOllamaに接続してください。」
sudo systemctl enable ollama
sudo systemctl start ollama
Ollamaは幅広いモデルをサポートしています。ここにダウンロードして使用できるいくつかの例のモデルがあります。
| モデル | パラメータ | サイズ | ダウンロード |
|---|---|---|---|
| ラマ3.1 | 8B | 4.7GB | Ollamaを実行してllama3.1を使用する |
| ラマ3.1 | 70B | 40GB | Ollamaを実行する llama3.1:70b |
| ラマ3.1 | 405B | 231GB | Ollamaを実行します llama3.1:405b |
| Phi 3 ミニ | 38億 | 2.3GB | Ollamaを実行する phi3 |
| Phi 3 ミディアム | 14B | 7.9GB | Ollamaを実行してphi3:medium |
| ジェマ2 | 27B | 16GB | Ollama run gemma2:27b |
| ミストラル | 7B | 4.1GB | Ollamaを実行してミストラルを使用する |
| コードラマ | 7B | 3.8GB | Ollama を実行して コードラマ |
Ollamaを使用すると、モデルとその依存関係がローカルに保存されるため、インターネット接続なしでLLMを便利に実行できます。
フィボナッチ数列のためのPythonコードを書いてください。
def fibonacci(n):
"""
This function prints the first n numbers of the Fibonacci sequence.
Parameters:
@param n (int): The number of elements in the Fibonacci sequence to print.
Returns:
None
"""
# Initialize the first two numbers of the Fibonacci sequence.
a, b = 0, 1
# Iterate over the range and generate Fibonacci sequence.
for i in range(n):
print(a)
# Update the next number in the sequence
a, b = b, a + b
Test function with first 10 numbers of the Fibonacci sequence.
if __name__ == "__main__":
fibonacci(10)
このPythonコードは、整数引数を受け取り、フィボナッチ数列の最初のn個の数を出力する簡単な`fibonacci`関数を定義しています。フィボナッチ数列は0と1から始まり、各次の数は前の2つの数の合計です。
最後の if __name__ == "__main__": ブロックは、この関数を引数値10で呼び出すことでテストし、フィボナッチ数列の最初の10個の数字を出力します。
結論
Ollamaは、ローカルで大規模言語モデルを扱うための新しいGen-AIツールで、プライバシーの向上、カスタマイズ、オフラインでのアクセスが可能です。Ollamaは、LLMとの作業を簡素化し、オープンソースLLMを直接自分のマシンで探索・実験することを推進しており、これによりAIの革新と深い理解を促進します。H100のような強力なGPUにアクセスするには、DigitalOceanのGPU Dropletsの使用を検討してください。DigitalOceanのGPU Dropletsは現在、初期提供中です。
Pythonを始めるにあたっては、システムの設定と入門チュートリアルの実行準備を整えるために、この初心者向けガイドを確認することをお勧めします。
参考文献
- オラマ公式
- GPUドロップレット
