Ribbit.work

低スペックなPCでも高度な学習が可能なDeepFaceColab - DeepFaceLab

機械学習pythonGoogleサービス

last modified date2021-8-24

publish date2021-6-12

DeepFaceLab に限らず、機械学習を行うにはある程度のマシンスペックが必要となります。

では DeepFaceLab を使うには高価な GPU を新調するしかないのかというと、そうではありません。

Google が提供する Google Colaboratory(以下 Colab)を使用することで、処理の核となる GPU だけでなく、メモリやストレージまで Google から借りることができます。

しかも無料で、業務用の高価な GPU も使えます。

利用は Google アカウントとブラウザさえあればいいので、Chromebook でも実現することができます。

また、すでに高性能な GPU を所持している方でも、並行して複数モデルの学習を行うことができます。

今回はその方法と実行手順をまとめます。

DeepFaceLab の Colab 版を入手する

対象の Colab ファイルはここにあります

遷移先の画面で直接操作を進めていっても問題ありませんが、Colabの性質上、DeepFaceLabのインストールからワークスペースの構築までの操作を何度も繰り返すことになります。

ファイルを自分の使いやすいよう編集するためにも、ご自身の Google ドライブへコピーすることをおすすめします。(コピーすることでインストール作業が不要となるわけではありません)

必要最低限の学習までの手順

Google ドライブの操作

workspace フォルダをアップロード

まず事前準備として、学習させたいリソースを保存した workspace フォルダの zip ファイルを Google ドライブへアップロードする必要があります。

フォルダの構成は DeepFaceLab インストール時の状態と合わせてください。

insert-blog-post_l1_2

もし src,dst それぞれの学習素材が揃っているのであれば、workspace\src\aligned と workspace\dst\aligned の2つだけでも動作させることができます。

DeepFaceColabでは定期的にGoogleドライブへファイルをバックアップするため、学習素材をColab側で作成する場合でも、最終的には動画ファイルを削除しアップロードしなおした方が、バックアップにかかる時間を減らすことができます。

フォルダの準備ができたら、workspace フォルダを圧縮し、Google ドライブのルートフォルダに保存しましょう。

取り込む zip ファイルの名前は後から自由に指定することができますが、Colab での学習前と後の workspace をどちらも保存しておきたいという場合を除き、標準の"workspace.zip"にしておくことをおすすめします。

また、学習後の workspace フォルダが Colab から保存されるので、Google ドライブの容量は十分に開けておきましょう。

Google Colab の操作

GPU ガチャを引こう

Google Colab ではセッション開始時に自動的に仮想マシンが割り当てられますが、このマシンは性能を厳選することができます。

とは言っても、Google Colab で割り当てられる GPU はどれも業務用の高性能なものですので、厳しい学習設定を必要としない場合は厳選は不要です。

「Check GPU」からスクリプト実行ボタンを押すと、現在割り当てられている GPU のスペックが表示されます。

insert-blog-post 1

割り当てられる GPU の種類と性能は以下です。性能の高い順に並べています。

GPU 性能 メモリ
P100 高い 15GB
T4 高い 14GB
K80 普通 12GB
P4 低い 8GB

基本的には T4 か K80 が割り当てられることが多いです。P100 が割り当てられることはめったにありません。

V100 という超高性能な GPU もありますが、無料プランで割り当てられているのは見たことありません。

例えば T4 で実現できるギリギリの学習設定でモデルを作成した場合、K80 や P4 ではメモリが足りずエラーとなることがあります。

もし目的の GPU が割り当てられなかった場合は、画面右上の RAM,ディスクとあるところをクリックし、「セッションの管理」をクリックします。

insert-blog-post_l1_3

現在接続しているセッションが表示されるので、切断を押します。

insert-blog-post_l1_4

切断を確認したら、「Check GPU」の実行ボタンを再度クリックすることで、新しいマシンが割り当てられます。

ランダムで抽選というよりは、高性能なものから空いていれば割り当てられる、というイメージなので、短いスパンで何度繰り返してもあまり意味がないかもしれません。

自動切断を防ぐ

Google は Colab を使用して、長時間放置して学習させるような使い方を望んでいないようです。

長時間放置の対策として、Colab の無料プランには以下の制限があります。

  • セッションの最長接続時間は 12 時間まで
  • 一定時間ごとに、ランダムでセッションを切断

1 つ目はどうしようもありませんが、2 つ目については DeepFaceLab の Colab 版に切断を防ぐ処理が用意されています。

python から javascript を使用して DOM を操作するという原始的なものですが、少なからず効果があるようです。

「Prevent random disconnects」からスクリプト実行ボタンをクリックすることで実行されます。学習前に押すようにしましょう。

Colab に DeepFaceLab をインストールする

Colab ではセッションを開始する度に新しいマシンが割り当てられるため、その都度 DeepFaceLab をインストールする必要があります。

自身の端末で学習させる際のように、1 度だけインストールすればいいというわけにはいきません。

「Install or update DeepFaceLab」から、「Download_FFHQ」にチェックを入れて実行ボタンを押してください。

insert-blog-post_l1_5

「Done」が表示されたら完了です。5 分~10 分ほどかかると思います。

workspace フォルダを取り込む

DeepFaceLab のインストールが終わったら、学習させる素材を仮想マシンに取り込みます。

OAuth 認証を使って Colab から Google ドライブへのアクセス権限を与える必要があります。

「Manage workspace」のタブを展開し、「Import from Drive」を実行します。

もし Google ドライブにアップロードした zip ファイルの名前を変更している場合は、「Archive_name」の部分をアップロードした名前に変えてから実行してください。

insert-blog-post_l1_6

実行ボタンを押すと、「Go to this URL in a browser」という文字の後ろに URL が表示されるので、その URL にアクセスしてください。

必要な権限を許可するか尋ねられるので、「許可」ボタンをクリックし、表示されたコードをコピーして Colab に戻ります。

「Enter your authorization code」の後ろに先ほどのコードを張り付けてエンターを押せば、対象の workspace の取り込みが開始されます。

学習を開始する

DeepFaceLab のインストール、workspace の取り込みが終わったら準備は完了です。

もし src, dst それぞれのフェイスセットを用意できている場合は、すぐに学習に取り掛かることができます。

フェイスセットを用意していない場合は「Extract, sorting and faceset tools」から抽出することができますが、今回はその説明は割愛します。

「Training」の実行ボタンをクリックすることで学習が開始されます。

「Backup_every_hour」オプションは、Google ドライブにバックアップを取るかどうかです。ランダム切断の可能性もあるので、できる限りチェックは入れておくことをおすすめします。

Colab pro を契約する必要はあるか

最後に Google Colaboratory の有料プランである、Colab pro を契約した方が良いかについてです。

結論から言えば、契約しなくても十分使えると思います。

契約するメリット

Colab pro を契約する最も大きなメリットは、無料プランだと基本的に割り当てられることのない、超高性能な GPU が割り当てられることです。

無料プランと比較して、4 ~ 5 倍の学習速度を出せることもあるようです。

ただ注意が必要なのは、必ずしも最も性能が高い GPU が常に割り当てられることはないということです。

契約したとしても GPU を購入するより圧倒的に安いですし、電気代などのランニングコストも考えれば全く損な選択肢ではないと思います。

この記事をシェア

この記事を読んだ方におすすめの記事

PySimpleGUIで自作テーマを使用する
2021-9-2

PySimpleGUIで自作テーマを使用する

python
deepfacelabでうまく学習させるために注意すべきポイント、コツを紹介
2021-8-16

deepfacelabでうまく学習させるために注意すべきポイント、コツを紹介

機械学習python
Eelを含むPythonプログラムを終了する
2021-8-16

Eelを含むPythonプログラムを終了する

python
【顔によって最適が異なる】フェイスタイプ(Face type)の正しい選び方
2021-8-16

【顔によって最適が異なる】フェイスタイプ(Face type)の正しい選び方

機械学習python

最新の記事

kuromoji.jsで形態素解析
2021-12-4

kuromoji.jsで形態素解析

TypeScriptJavaScript
レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】
2021-12-4

レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】

JavaScriptKintone
レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】
2021-11-29

レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】

JavaScriptKintone
スライダーを使って数値を設定できるKintoneプラグイン【無料公開】
2021-11-26

スライダーを使って数値を設定できるKintoneプラグイン【無料公開】

KintoneJavaScriptTypeScript