趣旨
機械学習のカスタムモデルを学習・評価する上でのコードをgitで管理する自分なりのやり方をみつけたので示す。
- オリジナルの機械学習のリポジトリをfork しない。
- 学習用のデータ自体はリポジトリに加えない。
- 前提:Python
- オリジナルのリポジトリのライブラリは, pip でインストールし、
import モジュール
で利用する。
- オリジナルのリポジトリのライブラリは, pip でインストールし、
- オリジナルのリポジトリにも、カスタムデータのフォルダでもない部分だけをカスタムモデルのリポジトリとして管理する。
序文
- 機械学習をカスタムモデルで実行するためのヒントは、その機械学習のリポジトリに書かれていることが増えている。
- また、利用者が各人のカスタムモデルの作成の記事をweb上に載せている。
- そのため、カスタムモデルを作って機械学習をするのが、簡単になってきています。
管理のしかたの方針が定まるまでの間の私の混乱
- fork することのできないリポジトリ
- 作成するカスタムモデルは公開することができない種類の学習であるので、OSSのコードのライセンスを作成するカスタムモデルに適用させることができません。
- 機械学習のその手法のリポジトリでの変更と、カスタムモデルとの差分がわかりにくい。
- カスタムモデルの作成・学習・評価以外の知らなくていい部分を適度に隠すことができない。
- 上手に変更点を管理しておかないと、将来、別の人物がサポートするときには、困ってしまう。
たどり着いた方法
前提:python の実装
指針1: オリジナルの機械学習のリポジトリのgit clone もしくは、git fork したリポジトリに、恒常的な変更は加えない。
- 理由: 変更点は、カスタムモデルのリポジトリ(以下カスタムリポジトリと略記する)に集中させるため。
- カスタムモデルのリポジトリを非公開で作成する。
指針2: オリジナルのライブラリはimport して用いる。
- requirements.txt を書いて、その中にオリジナルの機械学習モジュールが必要とするライブラリを記載します。
- venv 環境下で pip install -r requirements.txt として必要なモジュールをインストールします。
指針3:カスタムモデルの設定ファイルを追加します。
- オリジナルの機械学習のリポジトリの中のカスタムモデルの設定ファイルを、カスタムモデルのリポジトリに作成します。
- カスタムモデルの設定ファイルのどこかに、学習用のデータの所在のフォルダ名・ファイル名を指定する箇所があるので確認します。
指針4:カスタムデータは、カスタムリポジトリには含めない
- カスタムモデルの学習用のデータを別リポジトリ(以下カスタムデータリポジトリ)で管理します。
- 理由:
- データは、モデル・アルゴリズム・ツール類とは別物なので、別に管理する。
- データは、ファイルサイズが大きくなりすぎるのも、別に管理する理由の一つ。
指針5:カスタムモデルの実行はカスタムリポジトリで。 -
- カスタムモデルを使って機械学習を実行します。
- カスタムモデルの実行結果の出力を、カスタムリポジトリに出力するようにします。
- カスタムモデルの推論を実行するように、オリジナルのリポジトリのスクリプトを元に作成して、カスタムリポジトリに保存します。
指針6: カスタムモデルに固有のdoc、評価ツールなどをカスタムリポジトリに追加する。
- 同僚が引き継ぐときに困らないように、カスタムモデルに固有のドキュメント・評価ツールを追加します。
効果
- オリジナルのリポジトリとは別リポジトリで管理されているので、オリジナルとの差異が明確になる。