見出し画像

6ドル以下で完全版DeepSeek R1を!? 💥 カスタムGPUでDeepSeek R1(非蒸留版)を動かす方法💥

3,285 文字

UNSスロースチームによる2日間の深い調査と1つのクラックブロック投稿と研究の後、完全版DeepSeek R1モデルを実行できるチュートリアルをまとめました。これは蒸留モデルでもなく、クインモデルでもなく、Llamaモデルでもありません。これは本物のDeepSeek R1モデルですが、量子化されてGPU上で5ドル以下で実行できるバージョンにまで圧縮されています。
このビデオでは、GPUの入手方法から実行方法、そして最終的にテキスト生成や質問への回答を得る方法まで、全てのステップを網羅しています。
これは全て、unsoチームによる素晴らしい画期的なブログ投稿「DeepSeek R1 Dynamic 1.58ビット」のおかげで可能になりました。簡単に説明すると、彼らは完全版DeepSeek R1を量子化可能な部分に分割し、パフォーマンスの向上を理解しました。
このチュートリアルで実行するのは、1.58ビットまで量子化された専門家の混合モデルです。これにより、モデルは131GBまで縮小されますが、この段階でもまだ巨大なモデルであり、十分な品質を保っています。必要なコードや全ての情報については、このブログ投稿を確認することを強くお勧めしますが、このプロセスを通じて学んだことを全てこのビデオでお伝えします。
まず最初のステップは、GPUを入手することです。この場合、1.58ビット部分を実行しようとしているため、少なくとも160GBのメモリを持つGPUが必要です。私はrunpodで2台のH100マシンを入手しました。
テンプレートを選択したら、この場合はデフォルトのものを使用して、デプロイをクリックします。デプロイ後、基本の20GBポートボリュームが得られますが、これはモデルをダウンロードするには不十分です。モデルは数百GBあるため、Podを編集し、コンテナディスクを増やす必要があります。これは大きな問題ではありませんが、安全のために300GBのボリュームディスクに増やしました。
これら両方を行った後、Podを再起動します。これで、80GB×2の160GB合計の2台のH100 GPUと300GBのストレージを持つマシンが得られます。このマシンで、まずLlama CPPをダウンロードしてコンパイルし、次にunslotモデルの1.58ビットモデルをダウンロードし、最後にこれを実行します。
これは全て、6ドル、あるいは1時間未満なら約5ドルの料金で課金されるマシンで実行されます。これは2 GPUのセットアップになります。
マシンの準備ができたら、Jupyter Labをクリックしてjupyterノートブックに移動します。コードのコピーを簡単にするため、この場合はjupyterノートブックのみを使用します。実行する全てのコマンドは、jupyterノートブック内のターミナルコマンドとして実行しますが、これは少し手間のかかる方法ですが、簡単にするためにこの方法を選びました。ただし、通常のターミナルでも同じことができます。
Python 3ターミナルを開き、最初のセルでマシンの性能を確認します。nvidia-smiを実行すると、80GBの2台のマシン、つまり各80GBで合計160GBの2台のH100 GPUクラスターが確認できます。
次に、Llama CPPのインストールを開始しますが、直接インストールするのではなく、自分でビルドします。次のコマンドセットで、まずLinuxパッケージを更新し、Llama CPPをダウンロードしてコンパイルします。これが完了すると、モデルで使用できるLlama CPPが準備できます。
Llama CPPをコンパイルするには、cmakeを使用します。完了すると、Hugging FaceのモデルハブからダウンロードするモデルでLlama CPPを使用する準備が整います。
次にHugging Faceモデルハブからモデルをダウンロードする必要があります。これには多くの時間がかかります。私の場合、約40分かかりました。選んだマシン、タイミング、またはHugging Faceモデルハブの問題が原因かはわかりませんが、これがモデルのダウンロードと全プロセスの中で最も時間のかかる部分になります。
モデルのダウンロードが無事完了し、約160GBと3つのGGUFファイル、シェッドファイルが得られました。あとはこの特定のスクリプトでモデルを実行するだけです。このスクリプトは、ダウンロードしたGGUFモデルをLlama CPPを使用して実行します。
スクリプトについて理解しておく必要がある点がいくつかあります。ご覧のように、56層をGPUにオフロードしています。これは利用可能なGPUメモリの量に応じて調整できます。UNSスロースのブログ投稿によると、280GBのメモリがあれば61層まで可能とのことですが、私の場合、61層と60層を試したときにCUDAのメモリ不足エラーが発生したため、リスクを避けて56層にしました。60から40まで試して、56層が最適なポイントだと分かりました。
温度パラメータの0.6はDeepSeekが推奨している値です。それ以外は基本的に、好きな質問をすることができます。これは次の単語を予測するモデルではなく、指示調整されたモデルです。また、ご覧のように8,000トークンのコンテキストウィンドウも設定しており、これも調整して試すことができます。
この場合、古典的な「サリーの3人兄弟」の問題を与え、それが無事完了しました。コードを変更したい場合は、ここで質問を変更するだけでいいです。例えば「アメリカの首都は何ですか」という質問に変更し、実行するだけです。これらは全てコマンドライン上のコマンドで、私はjupyterノートブック内で実行しているだけだということを覚えておいてください。全てのコマンドの前にバン(!)を付けて実行する必要があります。これがunsoのブログコードと私が画面で示したものとの主な違いです。
正直なところ、かなり高速です。ご覧のように、質問をすると、モデルの層が読み込まれ、これらがGPUにオフロードされ、完了すると質問への回答を開始します。これは思考型モデルなので、まず質問内容を述べ、次に思考タグを開いて、質問に関する内部モノローグや会話を始めます。
この場合、ユーザーはアメリカの首都について質問しています。答えは確かにワシントンですが、何か混乱の可能性がないか確認すべきかもしれないと考え、どうすればユーザーにより印象的な回答ができるかを考えます。これはわずか1.58ビットのモデルです。より大きなモデルがあれば、この時点でさらに多くのことができます。
思考トークンが終了すると、最終的に必要な回答が得られます。これは素晴らしいイノベーションだと思います。UNSスロースチームには、私たちが使うのに驚くほど簡単で、かつ多額の出費を必要としないものを作ってくれたことに大きな感謝を捧げます。
全てが完了したら、GPUを閉じることができます。これを継続して使用したい場合は、ストレージを維持する必要がありますが、この場合は継続使用の予定がないので、停止するだけで大丈夫です。そうしないとrunpodからストレージ料金が請求されます。全てが完了したら、Podを削除するだけで、ストレージとスペースの料金も請求されなくなります。
runpodのリンクはYouTubeの説明欄に記載します。アフィリエイトですが、スポンサーではありません。Onoチームには、これをまとめてくれたことに感謝します。質問があればコメント欄でお知らせください。そうでなければ、最大かつ最も効率的なバージョンのDeepSeek R1モデルを、財布を痛めることなく、計算資源を使い果たすことなく、5ドルか6ドル以下で実行してお楽しみください。
ご視聴ありがとうございました。また別の動画でお会いしましょう。ハッピープロンプティング!

いいなと思ったら応援しよう!