llama-cpp-python(CUDA版)のビルド環境をオフラインで構築する

テクノロジー
この記事は約7分で読めます。

1.はじめに

 Pythonのライブラリ「llama-cpp-python」をCUDA版で導入するにはGPU搭載のPCでCUDAが使用可能になっており、かつビルド環境が整っていないとCPU版がインストールされてしまいます。
 ビルド環境のセットアップおよびllama-cpp-pythonのインストールまでをまとめました。また、ビルド環境については個人開発であればVisual Studio Communityを使えばいいですが、法人などの場合Communityは使用できません。ただし、Build Tools for Visual Studio(C++)についてはOSSのビルドのために使用するのであればVisual Studioのライセンスなしで利用が可能です。
 ビルド環境のセットアップについては、法人によってはセキュリティの関係でワークステーションがネットワークにつながっていないこともありますので、各種ビルド環境の構築をオフラインPCでインストールできるように作業を進めます。

2.インストーラーの収集(ネットワークにつながった端末で行う)

①Build Tools for Visual Studio

 オフラインでのインストーラー作成に必要となるVisual Studio ブートストラップを以下からダウンロードする。このとき選択するのは「Visual Studio 2026ビルドツール」。

ネットワーク ベースのインストールを作成する – Visual Studio (Windows)
プライベート ネットワーク インストール ポイントを作成して Visual Studio をデプロイし、アクセス許可が制限されたエンタープライズ ユーザーまたはインターネット アクセスが制限されたクライアント マシンをサポートします。

 ダウンロード先はどこでもよいが、この後C++のオフラインインストールに必要なファイルが同じディレクトリに保存されるため、十分な空き容量があるディスクに保存すること。

 ダウンロードしたディレクトリの余白部分を右クリックし、「ターミナルを開く」を押下する。
 コマンドプロンプト(またはPowerShell)が立ち上がるので、以下のコマンドを入力し、オフラインインストールに必要な資源をダウンロードする。

vs_BuildTools.exe --layout .\VSLayout --lang en-US ja-JP --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --add Microsoft.VisualStudio.Component.VC.CMake.Project

 すると、以下のようなウィンドウが表示されるので、Layout progressが100%になるまで放置する。

 ダウンロードが完了すると、ブートストラップと同じディレクトリにVSLayoutフォルダが作成されている。

 VSLayout\certificates配下には3つの証明書がある。ただし、これだけではオフラインインストールの際にエラーが発生するため、追加の証明書を事前に取得しておく必要がある。

 以下のリンク先から「Microsoft Windows Code Signing PCA 2024.crt」をダウンロードし、「certificates」フォルダに入れておく。

Developer Community
Developer Community

 Build Tools for Visual Studioの準備は終了。

(おまけ)
 コマンドプロンプトに入力したコマンドは、llama-cpp-pythonのビルドに必要なモノに限っている。-addコマンドでダウンロードするパッケージを宣言しており、以下のとおりである。

名前コンポーネントID
身分証明書Microsoft.VisualStudio.Workload.VCTools
x64/x86 用 MSVC ビルド ツール (最新)Microsoft.VisualStudio.Component.VC.Tools.x86.x64
Windows 11 SDK (10.0.26100.6901)Microsoft.VisualStudio.Component.Windows11SDK.26100
Windows 用 C++ CMake ツールMicrosoft.VisualStudio.Component.VC.CMake.Project

 もし、追加したいモノがあれば以下のリンクを参考に、「–add コンポーネントID」を記載することで追加可能。

Visual Studio Build Tools のワークロード ID とコンポーネント ID
Visual Studio のワークロード ID とコンポーネント ID を使用して、従来の Windows ベースのアプリケーションを構築する

②CMake

 ここからインストーラーをダウンロードしておく。

Download CMake
You can either download binaries or source code archives for the latest stable or previous release or access the current…

③CUDA Toolkit

 ここからインストーラーをダウンロードしておく。インストーラータイプはローカルを選択しておくこと。

CUDA Toolkit – Free Tools and Training
Get access to SDKs, trainings, and connect with developers.

④cuDNN

 ここからインストーラーをダウンロードしておく。

cuDNN 9.24.0 Downloads

3.開発端末へインストール

①Build Tools for Visual Studio

コマンドプロンプトまたはPowerShellでVSLayoutへ移動し、以下のコマンドを実行する(要管理者権限)

vs_BuildTools.exe --noWeb --noUpdateInstaller --wait

 Visual Studio Installerが起動するので続行をクリックする。
 この操作でVisual Studio Installerがインストールされる(まだC++のビルドツールはインストールされていない)

 インストールが終わるとどのコンポーネントをインストールするか選択できる。
 基本的にオフラインインストールで用意したコンポーネントが選択されていると思うので、そのままインストールボタンを押して続行する。

 このような画面になったらインストール完了。×でインストーラーを閉じておk。

 インストールが終わると、スタートメニューにVisual Studio 2026フォルダができている。
 ちゃんとインストールできているか確認するため、x64 Native Tools Command Prompt for VSを実行する。

 「cl」と入力し、実行した際に画像のようになればおk。

②CMake

 CMakeについては特に書くことはあまりないが、途中でインストールオプションが出てきた際に必ずパスを追加するオプションにチェックを入れたままにしておくこと。

③CUDA Toolkit

 インストーラーの指示に従ってポチポチ進めてください。

④cuDNN

 最近のインストーラーであればCUDA同様にポチポチ押していくだけでインストールできます。

 ただし、昔のcuDNNはZIP形式のため、自分でCUDAがインストールされたフォルダにコピー&ペーストする必要があります。

基本は以下のディレクトリにCUDAがあります(例:CUDA 13.3)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3

⑤CUDA関係の環境変数の確認

 ここでCUDA関係の資源が使えるようになっているか確認をします。基本的にはインストールした際に設定されているはずですが、万が一設定されていない場合は各自で環境変数を設定してください。

システム環境変数 変数名:Path

私のPCにはCUDAが13.2と13.3が入っているためbinとbin\64がそれぞれ設定されていました。

 CUDAフォルダにはincludeとlibフォルダがあります。これもPathに追加しておきましょう。

 設定後のPathは以下のとおり(面倒なので13.2は追加しませんでした…)。

 続いて、cuDNNの環境変数を設定します。今回私はv9.23をインストールしましたが、Program Files以下にインストールされていました。このうち、bin、include、libのパスを設定します。

 変数名CUDNNとし、画像のパスを変数値に突っ込みます。

 CUDNN以下のパスの構成としては「cuDNNのバージョン\xxx\CUDAバージョン」のはず。インストールした各ソフトのバージョンによって値は異なります。私はcuDNNが9.23、ターゲットのCUDAが13.3なのでこのパスで設定しました。

 以上で環境変数の設定は終了です。

 コマンドプロンプトを起動し「nvcc –version」を実行した際に、画像のようになればCUDAのパスが通っています。

 コマンドプロンプトを起動し「where cudnn64_*.dll」を実行した際に、画像のようになればcuDNNのパスが通っています。

4.llama-cpp-pythonのビルド

 環境変数を2種類設定しておく。ちなみに、以下のようにコマンドプロンプト上で設定してもよい。
  set CMAKE_ARGS=-DGGML_CUDA=on
  set FORCE_CMAKE=1
 その後仮想環境を立ち上げ、llama-cpp-pythonをpip installする。

 仮想環境を立ち上げ、ggufファイルを読み込んでみましたが、ばっちりGPUを認識しています。

コメント