メインコンテンツへスキップ

Devin が Modal の GPU 上で FLUX LoRA をポストトレーニングし、最良のチェックポイントをデプロイしてチャットアプリに追加する様子

Devin は、ジョブの実行に必要な場所であればどこでも動作します。Devin Outposts を使えば、セッションを自社のインフラストラクチャやパートナーのプラットフォーム上で実行できます。ここでは Modal の GPU サンドボックス上で実行するため、コードを書くのと同じ Devin が、モデルのトレーニングから評価、デプロイまでを一貫して担えます。このチュートリアルでは、Devin が 18 枚のカワウソ画像を使って FLUX LoRA をファインチューニングし、「Devin the software engineer」というプロンプトでカワウソの姿が生成されるようにします。さらに、そのモデルを Modal エンドポイントとしてデプロイし、サンプルアプリ otterchat のモデルピッカーに追加します。

始める前に

  • Modal アウトポストを作成する: uvx modal-devin init を実行し、生成された Modal アプリで使用する GPU を選択します。詳しくは Modal上でDevinを実行する と Outposts クイックスタート を参照してください。
  • リポジトリを接続する: 使用例のリポジトリ otterchat は、画像モデルピッカーを備えたチャットアプリです。アウトポストはこのリポジトリを永続的な Modal Volume にチェックアウトします。
  • トレーニングデータを準備する: キャプション付きの画像を、リポジトリまたはアウトポストがマウントする Modal Volume に追加します。この使用例では、「Devin the software engineer in a data center」のようなキャプションが付いたカワウソのイラスト画像 18 枚を使用しています。
  • シークレットを追加する: Weights & Biases のキーを 設定 > シークレット に保存します。Modal サンドボックスには Modal の認証情報があらかじめ設定されているため、Devin は追加のセットアップなしでエンドポイントをデプロイできます。
  • 長時間の実行に備えてルールを設定する: 「15 分ごとに進捗を報告する」「チェックポイントごとに検証用画像をレンダリングする」「すべての PR にプレビューリンクを含める」といった組織ルールを追加します (または prompt に含めます) 。
  • Slack を接続 (任意) : 学習の実行には数時間かかるため、セッションを Slackスレッドと同期して進捗を確認できるようにします。

ステップ 1: アウトポストでセッションを開始する

Devin を開き、prompt 入力欄の下にある Virtual environment メニューから Modal のアウトポストを選択して、コンポーザーの Slack トグルをオンにします。続いて、ハードウェアを確認します。
Devin から、PyTorch と diffusers がインストールされた NVIDIA B200 が利用可能であること、およびプロジェクトが永続的な Modal Volume 上にあることが報告されます。

ステップ 2: トレーニングデータをチェックする

Devin はプロジェクト内のデータセットを見つけ、キャプション付きの画像 18 枚をセッションと Slack スレッドに投稿します。

ステップ 3: トレーニング run を開始する

Devin は上記のルールに従って、ジョブを自律的に実行します。
  1. LoRA をトレーニング: 約 1,000 ステップを実行し、Weights & Biases に記録します。検証用のレンダリングは 100 ステップごとに行います。
  2. Slack に報告: 15 分ごとに、最新のレンダリング結果を添えて進捗を報告します。初期のレンダリングでは人物が描かれますが、トレーニングが進むにつれてカワウソが現れるようになります。
  3. 最適なチェックポイントを選択: ステップ 900 と 1,000 では過学習の兆候が見られたため、ステップ 700 を選択します。
  4. デプロイしてリリース: ステップ 700 をサーバーレスの Modal エンドポイントとして提供し、チャットアプリのモデルピッカーに otterimage 1.0 を追加します。さらにエンドツーエンドテストを録画し、プレビューリンク付きの PR を作成します。
各チェックポイントにおける検証用画像のグリッド

ステップ 500 からステップ 1,000 までの検証用レンダリング

ステップ 4: モデルを試す

PR のプレビューリンクを開き、画像の生成を依頼します。
チャットアプリが、スパゲッティを食べる漫画風のカワウソの画像を返している様子
同じ prompt を汎用の画像生成モデルに入力すると、人間の画像が返されます。

ステップ 5: 子セッションで反復する

ポストトレーニングが1回の run で終わることはまずありません。Devin に論文を渡し、複数の代替手法を並列で試させましょう。
Devin は新しい手法をトレーニングスクリプトに追加する PR を作成し、アウトポスト上で 3 つの子セッションを開始します。LoHa、LoKr、ネイティブファインチューニングにそれぞれ 1 つずつ割り当てられます。
LoHa、LoKr、ネイティブファインチューニング用の 3 つの子セッションが表示された Devin のセッション

次のステップ

Run Devin on Modal

GPU、Volumes、シークレットを利用できる Modal ベースのアウトポストを作成します

Devin Outposts

自社のインフラストラクチャやパートナープラットフォーム上でセッションを実行します

Slack 統合

長時間実行されるセッションの進捗を Slackスレッドで確認します

管理対象の Devin

子セッションを起動・監視して、並列で実験を進めます