Devin が Modal の GPU 上で FLUX LoRA をポストトレーニングし、最良のチェックポイントをデプロイしてチャットアプリに追加する様子
始める前に
- 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 トグルをオンにします。続いて、ハードウェアを確認します。ステップ 2: トレーニングデータをチェックする
ステップ 3: トレーニング run を開始する
- LoRA をトレーニング: 約 1,000 ステップを実行し、Weights & Biases に記録します。検証用のレンダリングは 100 ステップごとに行います。
- Slack に報告: 15 分ごとに、最新のレンダリング結果を添えて進捗を報告します。初期のレンダリングでは人物が描かれますが、トレーニングが進むにつれてカワウソが現れるようになります。
- 最適なチェックポイントを選択: ステップ 900 と 1,000 では過学習の兆候が見られたため、ステップ 700 を選択します。
- デプロイしてリリース: ステップ 700 をサーバーレスの Modal エンドポイントとして提供し、チャットアプリのモデルピッカーに
otterimage 1.0を追加します。さらにエンドツーエンドテストを録画し、プレビューリンク付きの PR を作成します。

ステップ 500 からステップ 1,000 までの検証用レンダリング
ステップ 4: モデルを試す
PR のプレビューリンクを開き、画像の生成を依頼します。
ステップ 5: 子セッションで反復する
ポストトレーニングが1回の run で終わることはまずありません。Devin に論文を渡し、複数の代替手法を並列で試させましょう。
次のステップ
Run Devin on Modal
GPU、Volumes、シークレットを利用できる Modal ベースのアウトポストを作成します
Devin Outposts
自社のインフラストラクチャやパートナープラットフォーム上でセッションを実行します
Slack 統合
長時間実行されるセッションの進捗を Slackスレッドで確認します
管理対象の Devin
子セッションを起動・監視して、並列で実験を進めます

