JFrog がもたらす機械学習の開発における Devops のベスト プラクティス ~ Hugging Face を使ってみた!

レストランの予約からオンライン ショッピングに至るまで、人々が日常的に使用するあらゆるツールにおいて機械学習の利用が進み、AI と機械学習 (ML) が主流となっています。実際、Morgan Stanley 社の調査では、CIO の 56% が最近の AI イノベーションが投資の優先順位に直接的な影響を与えていると回答しています。このことからも、ML エンジニアが最も急成長している職種の 1 つであることは驚くことではありません。

すべての AI 対応アプリケーションの中核はそれを動かすモデルです。そしてモデルは、高品質のソフトウェア アプリケーションの一部として、保護、管理、追跡、デプロイされる必要のあるバイナリです。組織にとっての課題は、モデル開発がまだ比較的新しい領域であり、大部分は個別に行われており、透明性とより広範で確立されたソフトウェア開発プラクティスとの統合が欠けていることです。

あらゆる兆候が ML モデルの使用が今後も増加し続けることを示しているため、DevOps およびセキュリティ担当者は、組織の MLOps ニーズに応えるために行動することが不可欠です。これは、以下を確立する必要があることを意味します。

  • 大規模なバイナリ ファイルをサポートするスケーラビリティを備えた、独自の内部拡張された ML および生成 AI モデルのローカル リポジトリ
  • 新しい AI 対応機能を迅速に構築して市場に投入するため組織が依存するパブリック モデル ハブのプロキシ用リモート リポジトリ
  • モデルの開発、管理、セキュリティの自動化を促進する単一の信頼できるソース
  • 今後の避けられない規制を見越して ML/データ サイエンス組織が採用および活用するモデルの完全な制御とガバナンス
  • 他のバイナリと並行したモデルの管理と、ソフトウェア リリースの一部としての ML モデルのシームレスなバンドルと配布

JFrog の ML Model Management の概要

JFrog の ML Model Management は、DevOps チームとセキュリティ チームが既存の JFrog ソリューションを活用して組織の MLOps ニーズを満たし、ML エンジニアやデータ サイエンティストのワークフローにシームレスに統合するのを容易にします。これにより、組織は既存のプラクティスとポリシーを ML モデル開発に適用し、セキュアなソフトウェア サプライ チェーンを拡張できます。

完全なハイブリッド サポートが予定されている JFrog SaaS インスタンスのオープン ベータ版で ML Model Management は、JFrog ユーザーが Artifactory を利用して独自のモデルを管理できるだけでなく、組織に取り込んだサードパーティ モデルを Hugging Face (主要なモデル ハブ) にプロキシできるようにします。いったん Artifactory に取り込んだら、ユーザーはリリースと配布に向けて、モデルをリリース バンドルの一部として含めることができます。

さらに、JFrog Xray の業界初の ML セキュリティ機能を使用することで、組織は悪意のあるモデルやライセンスに準拠していないモデルを検出してブロックできます。

ML Model Management は、組織がすでに導入している既存のソリューションを活用して、すべてのソフトウェア バイナリを 1 箇所で管理し、ML 開発に DevOps のベストプラクティスをもたらし、ML モデルの整合性とセキュリティを確保することを可能にします。

JFrog の ML Model Management がどのように機能するのか、実際に試すことができる楽しい例で見てみましょう。

既存の JFrog Cloud インスタンスを使用するか、評価版を使用します。

機械学習の実践: 偽物の検出

JFrog の伝統の 1 つは、年末に開催されるホリデー パーティーです。世界各地からカエル (Frog) たち (つまり、世界中のオフィスの全 JFrog 従業員) が集まり、1 年間の努力と成果を祝います。2022 年のパーティーは素晴らしいものでしたが、奇妙なことが起こりました…料理があっという間になくなり、会場からは参加者が予定人数を超えていると言われたのです。

状況を理解し、今後の教訓とするため、会場の監視カメラの映像をチェックしたところ、従業員ではない偽物が紛れ込んでいたようでした。

しかし、それを確かめるのは容易ではありませんでした。幸運なことに、私はちょうどデータ サイエンス チームと協力して、彼らの成果を JFrog の SDLC (ソフトウェア開発ライフサイクル) に統合する作業を行っていたので、彼らの助けを借りることにしました。

環境のセットアップ

まず、オープンソースの python ファイル用のリモート リポジトリを作成し、「my-python-remote」という名前を付けました。次に、作業を容易にするため、「my-ml-remote」という名前の Hugging Face ML モデル用のリモート リポジトリを作成しました。これらのリポジトリは、JFrog の社内手順に従って、承認されたライセンスを強制する Xray ポリシーに接続しました。

そして Jupyter Notebook を開いて、JFrog の Set Me Up を使用して、Hugging Face クライアントと pip を Artifactory に接続するために必要な環境変数を作成しました。すべての ML 指向のパッケージを 1 つのツールで管理することで、開発が容易になります。

コーディングに取りかかる

環境をセットアップした後、コーディングに取りかかりました。まず感情分析アルゴリズムを使ってみることにしました。以前に試したことのある友人から、「bertweet-base-sentiment-analysis」というモデルの良い評判を聞いていたので、このモデルを使用するため以下のコードを記述しました。

from huggingface_hub import snapshot_download
from huggingface_hub.utils import HfHubHTTPError


try:
    snapshot_download(repo_id="finiteautomata/bertweet-base-sentiment-analysis", etag_timeout=1500000000)
except HfHubHTTPError as e:
    print("\n\n\U0001F6A8\U0001F6A8\U0001F6A8\U0001F6A8 Xray blocked model download on 'not approved license' policy.\U0001F6A8\U0001F6A8\U0001F6A8\U0001F6A8\n\n")

しかし、コードを実行すると、以下のメッセージが表示されました。

どうやら、このモデルにはライセンス定義がないようでした。JFrog のポリシーではライセンスされていないアセットの使用は禁止されているため、新しいアイデアが必要になりました。

「zero-shot-object-detection (ゼロショットオブジェクト検出)」という興味深い画像処理技術について読んだことを思い出しました。調査の結果、うまく機能し、承認されたライセンスがある推奨モデルの記事とリファレンスを見つけました。モデルの使用例を参考にして、そのモデルを使ってカエルを識別するコードを記述しました。

最初に、モデルをロードします。

checkpoint = "google/owlvit-base-patch32"
detector = pipeline(model=checkpoint, task="zero-shot-object-detection")
model = AutoModelForZeroShotObjectDetection.from_pretrained(checkpoint)
processor = AutoProcessor.from_pretrained(checkpoint)

次に、オブジェクトを識別し、必要な分類を使用してオブジェクトを囲む矩形を描くコードを追加しました (使用可能な完全なコードはこちら)。

text_queries = ["Frog", "Cat"]
inputs = processor(text=text_queries, images=im, return_tensors="pt")
draw = ImageDraw.Draw(im)

with torch.no_grad():
    outputs = model(**inputs)
    target_sizes = torch.tensor([im.size[::-1]])
    results = processor.post_process_object_detection(outputs, threshold=0.2, target_sizes=target_sizes)[0]

モデルはかなり大きくなるため、モデルのロードとコードの実行に少し時間がかかりましたが、偽物が見つかりました!

この例からわかるように、わずか数行のコードを記述するだけで、JFrog をセットアップして、ML モデルを管理し、データ サイエンティストや ML エンジニアのフローと統合し、可視性と整合性の観点から組織に多大な利益をもたらすことが可能です。

JFrog で ML Model Management を使うための次のステップ

このシームレスなエクスペリエンスは、ML 開発に DevOps のベスト プラクティスをもたらし、組織がすべてのソフトウェア アーティファクトを 1 箇所で管理し、使用する ML モデルの整合性とセキュリティを確保できるようにします。

これらの機能はすぐに使い始めることができます。まだ JFrog を使用していない場合は、エクセルソフトの JFrog ページから評価版をお申込み下さい。


記事参照:

Bridging the gap between AI/ML model development and DevSecOps
タイトルとURLをコピーしました