> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Devin と Modal でカスタムモデルをポストトレーニングする

> Modal の GPU アウトポスト上で Devin を使ってカスタムモデルをポストトレーニングします。FLUX LoRA をファインチューニングし、Modal エンドポイントとしてデプロイしたうえで、PR として提出します

<video controls width="100%" playsInline>
  <source src="https://mintcdn.com/cognitionai-enterprise/lI6J3knrFHRXaW6-/images/tutorial-library/post-training-walkthrough.mp4?fit=max&auto=format&n=lI6J3knrFHRXaW6-&q=85&s=86cf58b823331c747f994ada34b79612" type="video/mp4" />
</video>

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

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

## 始める前に

* **Modal アウトポストを作成する**: `uvx modal-devin init` を実行し、生成された Modal アプリで使用する GPU を選択します。詳しくは [Modal上でDevinを実行する](https://modal.com/docs/devin) と [Outposts クイックスタート](/ja/cloud/outposts/quickstart.md) を参照してください。
* **リポジトリを接続する**: モデルを組み込みたいアプリのリポジトリを接続します。動画では、画像モデルピッカーを備えた非公開のデモ用チャットアプリを使用しており、永続的な Modal Volume にチェックアウトしています。アプリがない場合は、まず Devin にアプリを作成させる (例えば、`build a simple chat app with a model picker that calls an image generation endpoint`) か、アプリは用意せずに Devin にモデルのトレーニングとデプロイだけを任せることもできます。
* **トレーニングデータを準備する**: キャプション付きの画像を、リポジトリまたはアウトポストがマウントする Modal Volume に追加します。この使用例では、「Devin the software engineer in a data center」のようなキャプションが付いたカワウソのイラスト画像 18 枚を使用しています。
* **シークレットを追加する**: Weights & Biases のキーを [設定 > シークレット](https://app.devin.ai/settings/secrets) に保存します。Modal サンドボックスには Modal の認証情報があらかじめ設定されているため、Devin は追加のセットアップなしでエンドポイントをデプロイできます。
* **長時間の実行に備えてルールを設定する**: 「15 分ごとに進捗を報告する」「チェックポイントごとに検証用画像をレンダリングする」「すべての PR にプレビューリンクを含める」といった[組織ルール](/ja/product-guides/plugins.md#rules)を追加します (または prompt に含めます) 。
* **Slack を接続** (任意) : 学習の実行には数時間かかるため、[セッションを Slackスレッドと同期](/ja/integrations/slack.md#sync-sessions-with-slack-threads)して進捗を確認できるようにします。

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

[Devin](https://app.devin.ai/) を開き、prompt 入力欄の下にある **Virtual environment** メニューから Modal のアウトポストを選択して、コンポーザーの Slack トグルをオンにします。続いて、ハードウェアを確認します。

```text theme={null}
あなたの環境について詳しく教えてください
```

Devin から、PyTorch と diffusers がインストールされた NVIDIA B200 が利用可能であること、およびプロジェクトが永続的な Modal Volume 上にあることが報告されます。

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

```text theme={null}
ねえ Devin、教師あり学習に使ってる画像を見せて
```

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

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

```text theme={null}
flux をポストトレーニングして otterimage 1.0 モデルを作成してください。完了したら、otterchat のモデルピッカーに otterimage を追加してください
```

`otterchat` は動画内のデモアプリです。あなたのリポジトリ名に置き換えてください。

Devin は上記のルールに従って、ジョブを自律的に実行します。

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

![各チェックポイントにおける検証用画像のグリッド](https://mintcdn.com/cognitionai-enterprise/lI6J3knrFHRXaW6-/images/tutorial-library/post-training-validation.png?fit=max\&auto=format\&n=lI6J3knrFHRXaW6-\&q=85\&s=508dd2b263df31cecb698f97fac2f4a0)

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

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

PR のプレビューリンクを開き、画像の生成を依頼します。

```text theme={null}
generate an image of devin the software engineer eating spaghetti
```

![チャットアプリが、スパゲッティを食べる漫画風のカワウソの画像を返している様子](https://mintcdn.com/cognitionai-enterprise/lI6J3knrFHRXaW6-/images/tutorial-library/post-training-otterchat.png?fit=max\&auto=format\&n=lI6J3knrFHRXaW6-\&q=85\&s=01d56500b347f5fdddde6dbb5e075fba)

同じ prompt を汎用の画像生成モデルに入力すると、人間の画像が返されます。

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

ポストトレーニングが1回の run で終わることはまずありません。Devin に論文を渡し、複数の代替手法を並列で試させましょう。

```text theme={null}
https://arxiv.org/pdf/2309.14859v2 この論文に記載されている lora 以外の手法で otterimage をトレーニングするサブセッションを起動して
```

Devin は新しい手法をトレーニングスクリプトに追加する PR を作成し、アウトポスト上で 3 つの[子セッション](/ja/work-with-devin/advanced-capabilities.md#managed-devins)を開始します。LoHa、LoKr、ネイティブファインチューニングにそれぞれ 1 つずつ割り当てられます。

![LoHa、LoKr、ネイティブファインチューニング用の 3 つの子セッションが表示された Devin のセッション](https://mintcdn.com/cognitionai-enterprise/lI6J3knrFHRXaW6-/images/tutorial-library/post-training-child-sessions.png?fit=max\&auto=format\&n=lI6J3knrFHRXaW6-\&q=85\&s=e000e44ded334420c7438f429503771b)

## 次のステップ

> **[Run Devin on Modal](https://modal.com/docs/devin)**
>
> GPU、Volumes、シークレットを利用できる Modal ベースのアウトポストを作成します

> **[Devin Outposts](/ja/cloud/outposts/overview)**
>
> 自社のインフラストラクチャやパートナープラットフォーム上でセッションを実行します

> **[Slack 統合](/ja/integrations/slack.md)**
>
> 長時間実行されるセッションの進捗を Slackスレッドで確認します

> **[管理対象の Devin](/ja/work-with-devin/advanced-capabilities.md#managed-devins)**
>
> 子セッションを起動・監視して、並列で実験を進めます


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.