MLOps の紹介: 機械学習実験の追跡

MLOps の紹介: 機械学習実験の追跡

最高のチョコレートチップクッキーのレシピを開発しようとしていると想像してください。 最初の試行の後は、小麦粉の量を増やしてもよいでしょう。 たまにはチョコチップをもっと加えてもいいかもしれません。 今度はくるみを加えて試してみてはいかがでしょうか。 最終的に、十数のレシピを試したかもしれませんが、どれが一番美味しかったでしょうか?

このプロセス中にメモを取ることが良い考えであることにあなたも同意すると思います。 各レシピの材料と、出来上がったクッキーの味を書き留めておくとよいでしょう。

このアプローチは、機械学習 (ML) モデルの開発にも当てはまります。 材料などの入力の小さな変更が、クッキーの味などの結果に大きな影響を与える可能性があるため、ML モデルの開発には多くの実験が必要です。 したがって、何がうまくいき、何がうまくいかなかったかを見失わないようにするために、実験を追跡することは良い考えです。
この記事では次のことについて説明します。

目次

機械学習における実験追跡とは何ですか?

機械学習ワークフローにおける実験追跡は、各実験に関連するメタデータを保存し、実験を整理するプロセスです。 この文脈において、ML 実験は仮説を検証するための体系的なアプローチであり、それに関連するメタデータには実験の入力と出力が含まれています。
例は次のとおりです。
  • 仮説 – エポック数を増やすと、検証精度が向上します。
  • 入力 – コード、データセット、またはハイパーパラメーター。
  • 出力 – メトリクスとモデル。
ML モデルの開発は、最適なモデルを見つけることを目的としています。 に関して制約に応じて、メトリクス、リソース使用量、推論時間など。 この反復的な開発プロセスには、多くの実験を実行し、その結果を分析して他の実験と比較し、最高のパフォーマンスを発揮する構成を開発するための新しいアイデアを試すことが含まれます。
この目的のために、私たちは 入力, のような
  • コード、
  • トレーニングおよび検証データ (さまざまな機能やデータ拡張などを含む)
  • モデル アーキテクチャとモデル ハイパーパラメータ、
そしてその 出力 ML 実験の例:
  • 評価指標
  • そしてモデルの重み。

ML 実験を追跡する必要があるのはなぜですか?

入力のわずかな変更がまったく異なる結果をもたらす可能性があるため、最適なモデルを開発するために多くの実験を実行します。 入力と出力を記録し、実験を整理しないと、何がうまくいき、何がうまくいかなかったのかがすぐにわからなくなる可能性があります。
したがって、ML 実験を組織的な方法で追跡すると、次の点で役立ちます。
  • 概要: 実行された実験の数と内容 ?
  • 詳細と再現性 : 実験の詳細はどのようなものだったのでしょうか?また結果はどのように再現できるのでしょうか?
  • 比較: どのようなアイデアとどのような変更が改善につながりましたか ?
得られた情報があれば、組織化されていない多数の実験を理解しようとするのではなく、新しいアプローチとプロトタイプの改善に集中できます。

機械学習の実験をどのように追跡しますか?

機械学習の実験は、手動またはさまざまなツールを使用して自動で追跡できます。 実験は紙とペンを使って手動で追跡することも、テキスト ファイルやスプレッドシートでデジタル的に追跡することもできます。 または、コードにログ機能を追加するか、最新の実験追跡ツールを使用して、タスクを自動化することもできます。
各アプローチについて、このアプローチを設定し、入力と出力をログに記録し、情報を取得する方法の 3 つのステップを説明します。

手動実験追跡

自分自身または小規模なチームで機械学習モデルを開発し、管理可能な量の実験のみを実行するとします。 その場合、紙とペン、テキスト ファイル、またはスプレッドシートを使用して、実験を手動で簡単に追跡できます。
このアプローチは簡単で、開始時に実験を追跡するための優れた方法です。
ただし、これにはかなりの欠点があります。まず、実験に関連するすべてのメタデータを手動で記録するには、規律と時間が必要です。 第二に、手動ロギングプロセス中に間違いを犯すことは避けられません。 3 番目に、手動で記録した実験メモを紛失した場合 (バージョン管理を使用せずにコードを紛失した場合と同様)、すべてではないにしても、多くの実験を再実行する必要がある可能性があります。 最後に、この面倒なタスクが自動化されるという事実は別として、これは このアプローチは、多くの実験を実行する必要がある場合にはうまく拡張できません。
たとえば、手動実験追跡の大まかなワークフローを見てみましょう。 ペンと紙で .


1. セットアップ

ペンとノートを用意すれば準備完了です。

2. 入力と出力のログ記録

簡単に言うと、各実験で何を行っているかを書き留めます。 これは、モデルのハイパーパラメータとその結果として得られるモデルのパフォーマンスを書き留める単純なテーブルから、トレーニング中の各エポックのメトリクスなどの詳細を含む各実験のエントリのコレクションまで多岐にわたります。

3. 情報検索

開発段階でどれだけきちんとメモを取ったかによって、情報をすぐに見つけられるかどうかはわかりません。
テキスト ファイルやスプレッドシートなどのデジタル 成果物で実験を手動で追跡する場合は、特定の用語を検索したり、列をフィルターして並べ替えたりすることもできます。

実験追跡ツールを使用しない自動実験追跡

機械学習の実験を追跡する一般的な方法は、コードにログ機能を組み込むことで、重要と思われるすべてのことを書き留めるという面倒な作業を自動化することです。
このアプローチは手動の実験追跡よりもセットアップに少し手間がかかりますが、このアプローチは実装が簡単で簡単で、エラーが発生しにくいため (例: 手動ログ作成中にミスをするなど)、長期的には時間を節約できます。メモの紛失など)手動実験追跡として。
たとえば、自動実験追跡の大まかなワークフローを見てみましょう。 スプレッドシートに情報を記録するコードを記述することによって .

1. セットアップ

スプレッドシートを設定します。 コードにログ機能を追加するには、さまざまな方法があります。 この例では、スプレッドシートを pandas DataFrame に読み取り、実験ごとに新しい行を追加します。

2. 入力と出力のログ記録

次に、関連するすべての実験メタデータを 1 つの辞書に記録します。 次に、実験の辞書を新しい行として pandas DataFrame に追加できます。 最終的に、pandas DataFrame をスプレッドシートに保存し直すことができます。
関連するプロットを専用フォルダーに自動保存することもできます。


3. 情報の検索

スプレッドシートで、さまざまな実験の結果を検索、フィルター、並べ替えできるようになりました。

実験追跡ツールによる自動実験追跡

最後に、最新の実験追跡ツールがあります。これは、実験の追跡、整理、比較のために特別に構築されたソリューションです。 いくつかの一般的なオプションがあります。
  • CometML,
  • MLフロー、
  • ネプチューン、
  • TensorBoard、そしてもちろん
  • 重みとバイアス。
たとえば、自動実験追跡の大まかなワークフローを見てみましょう。 重みとバイアスあり . 関連するコードは次の場所にあります。 私のKaggleノートブック そして実験 私のW&Bダッシュボード .


1. セットアップ

インポートする ワンドブ Python でライブラリを作成し、次のコマンドで新しい実行を初期化します。 wandb.init() コードの先頭に .

2. 入力と出力のログ記録

入力と出力を区別できるように、入力はさまざまな方法で記録されます。 入力をログに記録するには、 wandb.config コード内のオブジェクトを使用してトレーニング設定を保存します。 出力をログに記録するには、次のように呼び出します。 wandb.log(dict) メトリック、メディア、またはカスタム オブジェクトのディクショナリをステップに記録するには .

3. 情報の検索

得られる an overview の中に W&B ダッシュボードは、モデルをトレーニングする場所 (ローカル マシン、ラボ クラスター、クラウド内のスポット インスタンス) に関係なく、ML 実験を整理するための中心的な場所です。 このダッシュボードでは、さまざまな実験の結果を検索、フィルター、並べ替え、グループ化したり、選択した実験を相互に比較したりすることができます。
また、エポックにわたるメトリクスなどのログに記録された値を比較することもできます。 このダッシュボード .
さらに、 W&B 実験ダッシュボード ,実験の詳細とメタデータを確認できます .

結論

ML 実験を紙とペンで追跡する場合でも、実験追跡ツールを使用して追跡する場合でも、 実験を追跡すると、ML モデルを開発する際の時間と頭痛の種を大幅に節約できます。
結果を再現し、何が機能し、何が機能しなかったかを把握するには、入力 (コード、データセット、ハイパーパラメータなど) を追跡することが重要であることを説明しました。 パフォーマンスなどの制約に従って最適なモデルを見つけるために結果を比較する必要があるため、出力 (メトリクスやモデルなど) を保存することも同様に重要です。
また、ML 実験追跡に対する 3 つの異なる一般的なアプローチ (手動と自動、後者では ML 追跡ツールを使用する場合と使用しない場合) をレビューしました。