DevOps 2 または 3: 継続的インテグレーションによる自動モデルトレーニング システムを構築するための理論と実践のガイド

DevOps 2 または 3: 継続的インテグレーションによる自動モデルトレーニング システムを構築するための理論と実践のガイド

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。

近年、機械学習は急速に進歩しており、機械学習の実験を行うことは簡単になりました。 scikit-learn や Keras などのライブラリを使用すると、わずか数行のコードでモデルを作成できます。

しかし、データ サイエンス プロジェクトを、チームの意思決定に役立つモデルや製品に統合されるモデルなどの有意義なアプリケーションに変えることは、ますます困難になっています。従来の機械学習プロジェクトにはさまざまなスキルセットが含まれており、そのすべてを習得するのは困難、あるいは不可能です。エンジニアでありながら優れたソフトウェアを開発できる稀有なデータ サイエンティストこそがユニコーンです。

機械学習の分野が成熟するにつれて、多くの仕事でソフトウェア、エンジニアリング、数学が融合されるようになるでしょう。そして、すでにいくつかの仕事ではそれが実現しています。

伝説的なデータ サイエンティスト、エンジニア、批評家である Vicki Boykis 氏のブログ「Data Science is Different Now」からの引用です。「ブーム後の時代では、データ サイエンスはエンジニアリングに近づいています。データ サイエンティストに求められるスキルは、目立たなくなり、データへの依存度が低くなり、従来のコンピューター サイエンスのカリキュラムとより一致するようになることは明らかです。」

[[336829]]

データサイエンティストがDevOpsを知る必要がある理由

エンジニアリングとソフトウェアのスキルが数多くある中で、データ サイエンティストは何を学ぶべきでしょうか? 私は DevOps を選びます。

DevOps は開発と運用を組み合わせたもので、2009 年にベルギーで開催された会議で生まれました。この会議は、開発と運用の間に長年存在してきた大きな相違から生じた技術組織内の緊張を緩和することを目的としています。ソフトウェア開発者は迅速に開発し、頻繁に実験を行う必要があり、一方、運用チームはサービスの安定性と可用性を優先します (これらの人々はサーバーを 24 時間 365 日稼働させ続けます)。彼らの目標は矛盾しており、互いに競争している。

これは現在のデータサイエンスを思い起こさせます。データ サイエンティストは、新しい方法でデータをモデル化、結合、変換する実験を通じて価値を生み出します。同時に、データ サイエンティストを雇用するテクノロジー組織は安定性をより重視します。

この格差は広範囲に広がっています。最新の Anaconda State of Data Science レポートによると、回答者の半数未満 (48%) が、データ サイエンスが組織に与える影響を説明できると感じています。データ サイエンティストが作成したモデルのほとんどは放置されていると推定されます。現時点では、モデリング チームとデプロイメント チーム間でモデルを転送する実用的な方法はありません。データ サイエンティスト、開発者、およびそれらを実装するエンジニアは、それぞれ大きく異なるツール、制限、スキルを持っています。

DevOps は、開発者とオペレーターの間のソフトウェアの行き詰まりを解決するために作成され、非常に大きな成功を収めました。多くのチームが、数か月に 1 回の新しいコードのデプロイから、1 日に数回のデプロイに移行しました。今、私たちが直面しているのは機械学習と運用の対立であり、データサイエンスに役立つDevOpsの原則であるMLOpsが輝かしいデビューを果たしました。

画像ソース: unsplash

継続的インテグレーション

DevOps は理論と実践の両方であり、次のものが含まれます。

  • すべてを自動化
  • 新しいアイデアに対する迅速なフィードバックを得る
  • ワークフローにおける手動の引き継ぎを削減

典型的なデータ サイエンス プロジェクトには、次のようなアプリケーションがあります。

  • すべてを自動化します。データ処理、モデル トレーニング、モデル テストの反復的かつ予測可能な部分を自動化できます。
  • 新しいアイデアに関するフィードバックをすぐに得ることができます。データ、コード、またはソフトウェア環境に変更が加えられた場合は、本番環境に近い環境 (依存関係と制約がある本番環境のマシン) ですぐにテストします。
  • ワークフローにおける手動の引き継ぎを削減します。可能な限り、データ サイエンティストがモデルをテストする機会を探してください。開発者が本番環境でモデルをテストするまで待たないでください。

上記の目標を達成するために、DevOps で採用されている標準は継続的インテグレーション (CI) です。重要なのは、プロジェクトのソース コードを変更すると (通常は git コミットを通じて)、ソフトウェアが自動的にビルドおよびテストされ、すべてのアクションがフィードバックされることです。通常、CI は、新しい機能の Git ブランチを作成するソフトウェア開発アクティビティ モデルである Git-flow と組み合わせて使用​​されます。機能ブランチは、自動テストに合格した後、メインブランチにマージできます。

ソフトウェア開発プロセスにおける CI の概略図

これにより自動化が可能になり、コードを変更すると自動ビルドがトリガーされ、その後すぐにテストが実行されます。テスト結果がすぐに得られるため、開発者は迅速なフィードバックを得て、コードを反復することができます。さらに、すべてが自動化されているため、他の人からのフィードバックを待つ必要がなく、ゼロスイッチングが実現されます。

では、なぜ機械学習にすでに存在する CI を使用しないのでしょうか? データ サイエンスとソフトウェア エンジニアリングのコミュニティ間の交流が少ないなど、文化が原因の一部であると私は考えています。

残りの部分は技術的な理由です。たとえば、モデルのパフォーマンスを理解するには、精度、特異度、感度などの指標を確認する必要があります。モデルのパフォーマンスを理解するには、精度、特異性、インスピレーションなどの指標を確認する必要があります。ここでは、混同行列や損失プロットなどのデータの視覚化が役立つ場合があります。したがって、合格/不合格のテストはフィードバックを妨げることはありません。モデルが改善されたかどうかを理解するには、問題領域に関する知識が必要なので、テスト結果は効率的かつ人間が解釈できる方法で報告される必要があります。

機械学習プロジェクトにおける継続的インテグレーション

継続的インテグレーションシステムはどのように機能しますか?

それでは、一般的な CI システムがどのように機能するかを見てみましょう。わかりやすいグラフィカルインターフェースを備え、初心者向けに詳細な操作ドキュメントを提供する GitHub Actions や GitLab CI などのツールのおかげで、CI システムを学習するためのハードルは最小限に抑えられます。 GitHub Actions はオープンソース プロジェクトでは完全に無料なので、例として使用します。

仕組みは次のとおりです:

(1)GitHubリポジトリを作成します。 .github/workflows というディレクトリを作成し、実行するスクリプトを含むディレクトリに次のような特別な .yaml ファイルを配置します。

  1. $ python トレイン.py

(2)プロジェクトライブラリ内のファイルを変更し、更新をgit commitして、GitHubライブラリに送信します。

  1. # 実験用の新しい Git ブランチを作成します。$ git checkout -b "experiment"
  2. $ edit train.py# git add、commit、push で変更を加えます
  3. $ git add . && commit -m "正規化された機能"
  4. $ git プッシュオリジン実験

(3)プッシュが検出されると、GitHubはすぐにコンピューターの1つで.yamlファイル内の関数を実行します。

(4)GitHubは関数が正常に実行されたかどうかを知らせる通知をポップアップ表示します。

上記のコンテンツは、GitHubリポジトリのアクションタブで見つかります。

とても簡単です。コードを更新し、変更をデータベースにコミットするだけで、ワークフローが自動的に実行されます。

ステップ 1 で説明した特別な .yaml ファイルに戻り、その 1 つを簡単に見てみましょう。好きな名前を付けて、最後に .yaml を付け、.github/workflows に保存します。のように:

  1. # .github/workflows/ci.yamlname: モデルのトレーニング
  2. オン: [push]ジョブ:
  3. 走る:
  4. 動作環境: [ubuntu-latest]
  5. 手順:
  6. - 使用: actions/checkout@v2
  7. - 名前: トレーニング
  8. 実行: |
  9. pip インストール -r 要件.txt
  10. python トレイン.py

指示は多数ありますが、そのほとんどは 1 つのアクションから別のアクションへと進むものです。この GitHubActions ガイドに従い、「実行」セクションのワークフローを入力することを忘れないでください。

ファイルがプロジェクト リポジトリ内にある場合、GitHub がコードが更新されたことを検出するとすぐに (変更をプッシュすることによって)、GitHub Actions は Ubuntu サーバーをデプロイし、要件をインストールするコマンドを実行して、Python スクリプトを実行します。ワークフローに必要なファイル (この場合は requirements.txt と train.py) がプロジェクト リポジトリに存在する必要があることに注意してください。

より良いフィードバックを得る

自動トレーニングは素晴らしいですが、すべての結果をわかりやすい形式で得ることも重要です。 GitHub Actions では、プレーンテキスト形式でサーバー ログにアクセスできるようになりました。

GitHub Actions ログの印刷例

しかし、モデルのパフォーマンスを理解するのは難しいです。モデルとデータはどちらも高次元かつ非線形であり、図なしでは理解が困難です。

CI ループにデータ視覚化を組み込む 1 つの方法を紹介します。ここ数か月、Iterative.ai の私のチーム (データ バージョン管理を担当) は、機械学習プロジェクトで GitHub Actions と GitLab CI の使用を容易にするツールキット (Continuous Machine Learning (CML) と呼ばれる) の開発に取り組んできました。これはオープンソースで無料です。

チームの基本的なアイデアは、「GitHub Actions を使用して機械学習モデルをトレーニングする」というものです。成功/失敗の通知ではなく、より詳細なレポートを提供するいくつかの関数を構築しました。 CML は、SciKit-learn によって生成されたこの混同行列のように、レポートにグラフや表を配置するのに役立ちます。

このレポートを表示するには、GitHub で Pull Request をクリックしてください。

レポートを生成するために、GitHub Actions は Python モデル トレーニング スクリプトを実行し、CML 関数を使用してモデルの精度と混同行列をマークダウン ファイルに書き込みます。次に、CML はマークダウン ファイルを GitHub にアップロードします。

変更された .yaml ファイルには、次のワークフローが含まれています (新しく追加された行は太字で強調表示されています)。

  1. 名前: train-my-model
  2. オン: [プッシュ]
  3. 仕事:
  4. 走る:
  5. 動作環境: [ubuntu-latest]
  6. コンテナ: docker://dvcorg/cml-py3:latest
  7. 手順:
  8. - 使用: actions/checkout@v2
  9. - 名前: トレーニング
  10. 環境:
  11. リポジトリトークン: ${{secrets.GITHUB_TOKEN }}
  12. 実行: |
  13.   
  14. # train.py は metrics.txt とconfusion_matrix.png を出力します
  15. pip3 インストール -rrequirements.txt
  16. python トレイン.py
  17.         
  18. # metrics.txt の内容をマークダウンレポートにコピーします
  19. cat metrics.txt > > report.md # 混同行列をreport.mdに追加します
  20. cml-publishconfusion_matrix.png --md > > report.md # レポートを GitHub に送信して表示します
  21. cml-コメント送信レポート.md

.yaml には、特別な Docker コンテナや環境変数などのより詳細な構成情報や、実行する新しいコードが含まれるようになったことに注意してください。各 CML プロジェクト内のコンテナと環境変数の詳細情報は固定されており、ユーザーは操作する必要がなく、コードに集中するだけで済みます。

これらの CML 関数をワークフローに追加することで、CI システムでより完全なフィードバック ループが作成されます。

  • Git ブランチを作成し、ブランチ上のコードを更新します。
  • モデルを自動的にトレーニングし、メトリック (精度) と視覚化 (混同行列) を生成します。
  • これらの結果をプル リクエスト内の視覚的なレポートに埋め込みます。

あなたとチームメイトが、このアップデートがモデリングの目標達成に役立つかどうかをまだ検討している間、参照用のさまざまなビジュアル ダイヤルがすでに利用可能です。さらに、レポートは、正確なプロジェクト バージョン (データとコード)、トレーニングに使用されたサーバー、および Git 経由のサーバー ログに接続します。非常に詳細です。コードと関係のないフローティングダイアグラムがワークスペースに表示されることはもうありません。

これがデータ サイエンス プロジェクトにおける CI の基本的な概念です。明確に言えば、これは CI を使用する最も単純な例にすぎません。実際の操作では、より複雑な状況に遭遇する可能性があります。 CML には、GitHub リポジトリの外部に保存されている大規模なデータセット (DVC を使用) を使用し、デフォルトの GitHub Actions サーバーではなくクラウドでトレーニングするのに役立つ機能もあります。これは、GPU やその他のプロフェッショナル設定を使用できることを意味します。

たとえば、GitHub Actions を使用して、EC2 GPU をデプロイし、ニューラル スタイル転送モデルをトレーニングするプロジェクトを作成しました。これは私の CML レポートです:

独自のDockerコンテナを使用してさらにシミュレーションすることもできます

機械学習における CI に関する最終的な考察

要約すると、DevOps は特定のテクノロジーではありません。これは、ソフトウェア開発のプロセスを完全に再構築するための理論であり、一連の原則と実践でもあります。その効率性は、チーム作業の体系的なボトルネックを解決し、新しいコードをテストすることにあります。

将来、データ サイエンスが成熟するにつれて、DevOps の原則を機械学習プロジェクトに適用できる人材が、魅力的な給与と大きな組織的影響力とともに、さらに求められるようになるでしょう。継続的インテグレーションは DevOps の基盤であり、信頼性の高い自動化、迅速なテスト、チームの自律性の文化を構築するための最も効果的な方法の 1 つです。

GitHub Actions や GitLab CI などのシステムにより CI が可能になります。これらのサービスを使用して、自動モデルトレーニング システムを構築できます。メリットは数多くあります:

  • コード、データ、モデル、トレーニング インフラストラクチャ (ハードウェアおよびソフトウェア環境) はすべて git バージョンです。
  • タスクを自動化し、高頻度のテストを実行し、迅速なフィードバックを取得します (CML を使用すると視覚的なレポートを利用できます)。長期的には、これによってプロジェクト開発が加速されることは間違いありません。
  • CI システムにより、すべてのチームメンバーが作業の進捗状況を確認できます。最もよく実行されるコード、データ、モデルを収集するために頭を悩ます必要はありません。

[[336832]]

画像ソース: unsplash

一度使い始めると、ワンクリックの git コミットでモデルが自動的にトレーニング、記録、レポートされるので、きっと満足していただけるでしょう。体を動かして気分を良くしましょう!

<<:  数行のコードで強化学習を実装する

>>:  トイレットペーパーを手に入れるには顔をスキャンする必要がありますか?顔認識の悪用リスクに注意してください。漏洩してしまったらどうすればよいですか?

ブログ    
ブログ    
ブログ    

推薦する

...

ソフトウェアの欠陥予測のためのソフトウェア可視化と転移学習の活用

論文のデータセットとコードはオープンソース化されています: https://zenodo.org/r...

...

アルゴリズムを知的財産として保護する方法

Ogilvy は、ロボティック プロセス オートメーションと Microsoft のビジュアル AI...

AIビッグモデルは今後も拡大し続けるのか?

人工知能は現在、ビジネスと金融のあらゆる側面に急速に導入されています。いくつかの刺激的な成功により、...

馬化騰氏は「人工知能の4つの主要な発展傾向が今後10年間で世界を変えるだろう」と述べた。

今後10年間で世界を変える人工知能の4つの主要な発展トレンドの分析61歳のビル・ゲイツ氏は大学卒業生...

...

...

...

2021年に自動運転は私たちをどこへ連れて行くのでしょうか?

[[361430]]文/Quiu Yueye 編集/Tan Lu新年、自動運転は私たちをどこへ連れ...

AIによる朗読がオーディオブック市場に影響、声優の仕事が脅かされる

テクノロジーの進歩により、人工知能 (AI) が徐々に出版業界に参入し始めており、特にオーディオブッ...

データが増えるほど、AIの意思決定モデルは脆弱になる

データは人工知能システムを構築するために必要な重要なインフラストラクチャです。データは、AI システ...

AIとDevOps: 効率的なソフトウェア配信のための完璧な組み合わせ

AI時代では、DevOpsとAIが共有結合します。 AI はビジネス ニーズに基づいてソフトウェアの...

ガートナー:2026年までに企業の80%が生成型AIを導入する見込み、これは現在の16倍にあたる

アナリスト会社ガートナーは10月13日、2026年までに企業の80%以上が生成型AIアプリケーション...

プログラマーが知っておくべき10の基本的な実用的なアルゴリズムとその説明

[[128752]]アルゴリズム1: クイックソートアルゴリズムクイックソートは、Tony Hall...