Lifematics Corporate Blog

Lifematics社のコーポレートブログへようこそ!

mig-parted設定手順

前回は、MIG設定の概要と、その基本的な設定手順を紹介しました。 前回の記事を読んでいない方は、ぜひそちらを先に読んでみてくださいね。

今回は、NVIDIAの公式ツールであるmig-parted(MIG Partition Editor)について紹介します。 前回の手順でMIGの設定は行えましたが、再起動時にその設定が消えてしまうという致命的な欠点がありました。 しかし、mig-partedを活用することで、その悩みを一掃することができます。

mig-partedってなぁに?

mig-partedは、MIG設定を簡単に行うためのツールです。 これを使えば、再起動時に設定が消える問題を解決できます。 前回紹介したユーザーガイドにも2回だけ登場します。

設定ファイルを用意し、コマンドを実行するだけで簡単に設定が適用されます。 ここまでは公式GitHubにも記載があってよくわかります。 更に、起動プロセスに組み込むことで、再起動時にMIG設定が適用されるようになるんですが、 この辺りはユーザーガイドには(多分)記載がなく、ネット上のドキュメントも少なかったので、本記事で解説してみます。

設定手順

では、実際にmig-partedを使って設定を行う手順を見ていきましょう。

(おまけ)mig-partedのインストール

まず、mig-partedとmig-managerがインストールされていない場合は、以下のコマンドでインストールします。 mig-partedはGitHubでは3種類のインストール方法が紹介されています。 今回は、git cloneしてビルドする方法を紹介します。 debrpmパッケージもGitHubにありますので、それを利用してのインストールも可能かもしれません。

 # git clone https://github.com/nvidia/mig-parted.git
 # cd mig-parted
 # go build ./cmd/nvidia-mig-parted
 # go install ./cmd/nvidia-mig-manager

(おまけ)mig-managerサービスの起動

mig-managerサービスが無い場合は、サービスファイル(例:nvidia-mig-manager.service)を作成します。 今回は以下のような内容のファイルを/etc/systemd/system/nvidia-mig-manager.serviceとして配置しました。

 [Unit]
 Description=Configure MIG on NVIDIA GPUs
 DefaultDependencies=no
 After=nvidia-persistenced.service nvidia-fabricmanager.service
 Before=nvidia-gpu-reset.target

 [Service]
 Type=oneshot
 ExecStart=-/bin/bash /etc/nvidia-mig-manager/service.sh

 [Install]
 WantedBy=multi-user.target nvidia-gpu-reset.target

必要なファイルの準備

examplesディレクトリやGitHubの例を参考に、MIG設定ファイル(例:config.yaml)を作成します。 このファイルには、どのようにGPUを分割するかの情報が含まれています。 今回は以下のような内容のファイルを/etc/nvidia-mig-manager/config.yamlとして配置しました。

 version: v1
 mig-configs:
   # 全てのGPUでMIGを無効化
   all-disabled:
     - devices: all
       mig-enabled: false

   # 1-2番目のGPUでMIGを無効化、3-8番目のGPUはMIGを有効化
   0-1-disabled:
     - devices: [0,1]
       mig-enabled: false
     - devices: [2,3,4,5,6,7]
       mig-enabled: true
       mig-devices:
         "1g.10gb": 7

ちょっと試しましたが、versionはv1でないといけないっぽいです。 簡単にフォーマットを解説すると、

 version: v1
 mig-configs:
   <設定名>:
     - devices: <all or [0,1,2,3,...]>
       mig-enabled: <true or false>
       mig-devices:
         "<profile>": <MIGインスタンス数>

という感じです。

設定の適用

設定ファイルを使って、MIG設定を適用します。以下のコマンドを実行します。

 $ nvidia-mig-parted apply -f config.yaml -c 0-1-disabled
 MIG configuration applied successfully

これで、設定が適用されます。

設定の確認

設定が正しく適用されたかを確認します。以下のコマンドを実行します。

 $ nvidia-mig-parted assert -f config.yaml -c pdgx001-gpu
 Selected MIG configuration currently applied

これで、選択したMIG設定が現在適用されていることを確認できます。

起動プロセスに組み込む

いよいよ、再起動時に設定が適用されるようにします。 胸が高鳴りますね。 設定ファイル(例:override.conf)を作成します。 config.yamlの中でどの設定を適用するかを指定します。 今回は以下のような内容のファイルを/etc/systemd/system/nvidia-mig-manager.service.d/override.confとして配置しました。

 [Service]
 Environment="MIG_PARTED_SELECTED_CONFIG=0-1-disabled"

再起動

OSを再起動して、nvidia-smi等で設定が適用されているかを確認します。

まとめ

以上が、mig-partedを使ったMIG設定の概要と手順です。 これで、再起動時に設定が消えてしまう欠陥仕様も解決できます。 ぜひ試してみてくださいね!