Wan を使用して画像生成を行う際、Text-to-Image プロンプトガイドでは特定のスタイル、IP キャラクター、またはビジュアルエフェクトのカスタマイズができない場合は、モデルファインチューニングを使用します。
範囲
-
対応リージョン:このドキュメントはシンガポール リージョンにのみ適用されます。このリージョンの API キー を使用する必要があります。
-
対応ファインチューニング方法:SFT-LoRA 効率的なファインチューニング。
-
対応モデル:
-
画像生成 (text-to-image/image-to-image):wan2.7-image-pro、wan2.7-image。
-
モデルのファインチューニング方法
テキストから画像
ファインチューニングの目的:キャラクター LoRA モデルのトレーニング。
期待される結果:テキストプロンプトを指定すると、モデルはプロンプトで記述されたシーンに特定のキャラクターが登場する画像を生成します。
|
入力プロンプト 混雑した朝のラッシュアワーの地下鉄車内で、手すりにつかまっている人物。背景にはぼやけた乗客がおり、窓からトンネルの照明が見える。普通のオフィスワーカーの白いシャツと黒いズボンを着用し、カメラに向かって立っている。半身ショット、リアルなスナップ写真のような雰囲気。 |
出力画像 (ファインチューニング前 - テキストから画像)
リファレンス画像がない場合、モデルは特定のキャラクターを生成できません。 |
出力画像 (ファインチューニング後)
ファインチューニング後、モデルはトレーニングセットの特定のキャラクターを確実に再現できます。 |
画像から画像
ファインチューニングの目的:「ポストアポカリプス赤黒メカアーマー」LoRA モデルのトレーニング。
期待される結果:キャラクター画像を指定すると、モデルはテキストプロンプトを必要とせずに、キャラクターの「ポストアポカリプス赤黒メカアーマー」 スタイル版を生成します。
|
入力画像
|
出力画像 (ファインチューニング前)
テキストプロンプトだけでは、特定の「ポストアポカリプス赤黒メカアーマー」効果を毎回確実に生成することはできません。 |
出力画像 (ファインチューニング後)
ファインチューニング後、モデルはテキストプロンプトを必要とせずに、トレーニングセットの「ポストアポカリプス赤黒メカアーマー」効果を再現できます。 |
以下のコードを実行する前に、API キーの取得および 環境変数としての API キーの設定を行ってください。
ステップ 1:データセットのアップロード
ローカルのデータセット (.zip 形式) を Alibaba Cloud Model Studio プラットフォームにアップロードし、ファイル ID (id) を取得します。
サンプルトレーニングデータ:形式については、トレーニングセットをご参照ください。
-
画像生成 - テキストから画像:wan-image-t2i-training-dataset.zip
-
画像生成 - 画像から画像:wan-image-i2i-training-dataset.zip
リクエスト例
この例では、テキストから画像を使用し、トレーニングセットのみをアップロードします。システムは自動的にトレーニングセットの一部を検証データセットとして分割します。
curl --location --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"./wan-image-t2i-training-dataset.zip"' \
--form 'purpose="fine-tune"'
レスポンス例
id を保存してください。これは、アップロードされたデータセットの一意の識別子です。
{
"id": "file-ft-3c67043a747c-xxxxxx",
"object": "file",
"bytes": 73310369,
"filename": "wan-image-t2i-training-dataset.zip",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1782271893
}
ステップ 2:モデルのファインチューニング
ステップ 2.1:ファインチューニングジョブの作成
ステップ 1 で取得したファイル ID を使用して、トレーニングジョブを開始します。
リクエスト例
<replace_with_training_dataset_file_id> を前のステップで取得した id に置き換えてください。完全なパラメータリファレンスと形式の制約については、ハイパーパラメーターをご参照ください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.7-image-pro",
"training_datasets": [
{
"data_source_type": "file_id",
"file_id": "<replace_with_training_dataset_file_id>"
}
],
"training_type": "efficient_sft",
"hyper_parameters": {
"learning_rate": 3e-5,
"max_steps": 800,
"eval_steps": 200,
"max_token_length": "1k",
"gradient_clip": 0.5,
"weight_decay": 0.02,
"max_pixels": "1k",
"val_img_size": "1k",
"generation_type": "t2i",
"lora_rank": 32,
"save_total_limit": 10
}
}'
トレーニング時間の目安:
-
テキストから画像 (t2i):300 ステップで約 77 分。
-
画像から画像 (i2i):300 ステップで約 110 分。
レスポンス例
output フィールドの 3 つの主要なパラメータに注目してください。
-
job_id:ジョブ ID。進捗状況の照会に使用します。 -
finetuned_output:ファインチューニング済みモデルの名前。以降のデプロイメントと呼び出しには、この名前を使用する必要があります。 -
status:トレーニングステータス。ファインチューニングジョブの作成後、初期ステータスは PENDING であり、トレーニングがまだ開始されていないことを示します。
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "PENDING",
"finetuned_output": "xxxx-ft-202511111122-xxxx",
...
}
}
ステップ 2.2:ファインチューニングジョブステータスの照会
ステップ 2.1 で取得した job_id を使用して、ジョブの進捗状況を照会します。status が SUCCEEDED に変わるまで、以下の API をポーリングしてください。
リクエスト例
URL 内の <replace_with_fine_tuning_job_id> を job_id の値に置き換えてください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
レスポンス例
output フィールドの 2 つのパラメータに注目してください。
-
status:その値が SUCCEEDED に変わると、モデルのトレーニングが完了し、モデルのデプロイメントに進むことができます。 -
usage:モデルトレーニング中に消費されたトークンの合計数。課金のために使用されます。
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "SUCCEEDED",
"usage": 432000,
...
}
}
ステップ 3:ファインチューニング済みモデルのデプロイ
ステップ 3.1:モデルのオンラインサービスへのデプロイ
ファインチューニングジョブのステータスが SUCCEEDED に変わったら、モデルをオンラインサービスとしてデプロイします。
リクエスト例
<replace_with_model_name> をファインチューニングジョブの作成の出力から取得した finetuned_output の値に置き換えてください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model_name": "<replace_with_model_name>",
"capacity": 1,
"plan": "lora"
}'
レスポンス例
output フィールドの 2 つのパラメータに注目してください。
-
deployed_model:デプロイ済みモデル名。デプロイメントステータスの照会とモデルの呼び出しに使用します。 -
status:モデルのデプロイメントステータス。ファインチューニング済みモデルのデプロイ後、初期ステータスは PENDING であり、デプロイメントがまだ開始されていないことを示します。
{
...
"output": {
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
"status": "PENDING",
...
}
}
ステップ 3.2:デプロイメントステータスの照会
デプロイメントステータスを照会します。status が RUNNING に変わるまで、以下の API をポーリングしてください。
この例のファインチューニング済みモデルの場合、デプロイメントプロセスには約 5〜10 分かかります。
リクエスト例
<replace_with_deployed_model> をステップ 3.1 の出力から取得した deployed_model の値に置き換えてください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<replace_with_deployed_model>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
レスポンス例
output フィールドの 2 つのパラメータに注目してください。
-
status:ステータスが RUNNING に変わると、モデルが正常にデプロイされており、呼び出しを開始できます。 -
deployed_model:デプロイ済みモデル名。
{
...
"output": {
"status": "RUNNING",
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
...
}
}
ステップ 4:モデルの呼び出しによる画像生成
モデルが正常にデプロイされた後 (デプロイメントのstatus が RUNNING)、呼び出しを開始できます。
現在デプロイされているモデルは 非同期呼び出し のみをサポートしており、message.content に type フィールドはありません。
カスタムデータセットの構築
このドキュメントのサンプルデータを使用してファインチューニングのワークフローを体験するほか、独自のデータセットを構築してファインチューニングを行うこともできます。
データセットには、トレーニングセット (必須) と検証セット (オプション。トレーニングセットからの自動分割をサポート) を含める必要があります。すべてのファイルを .zip 形式でパッケージ化してください。ファイル名には、英字、数字、アンダースコア、ハイフンのみを使用できます。
データセット形式
トレーニングセット:必須
Text-to-Image
トレーニングセットには、トレーニングターゲット画像とアノテーションファイル (data.jsonl) が含まれます。
-
トレーニングセットのサンプル:wan-image-t2i-training-dataset.zip
-
ZIP パッケージのディレクトリ構造:
wan-image-t2i-training-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大 20 MB ├── 1_0.png # トレーニングターゲット画像、最大解像度 4096*4096、画像 1 枚あたり最大 20 MB、PNG/JPG/JPEG/WEBP/BMP をサポート ├── 1_1.png # ファイル名は英字のみをサポートします。フラットな構造 (サブディレクトリなし) にしてください └── 1_2.png -
アノテーションファイル (data.jsonl):各行は 1 つのトレーニングサンプルを表し、JSON オブジェクトである必要があります。
{ "prompt": "s86b5p, A person in a quiet private library on a peaceful afternoon, with tall dark walnut bookshelves behind them, sunlight streaming through venetian blinds casting striped shadows, wearing a soft beige cable-knit sweater, standing facing the camera, half-body shot, the image has a delicate film grain texture.", "img_path": "./1_0.png" }
Image-to-Image
トレーニングセットには、参照画像 (入力)、トレーニングターゲット画像 (出力)、およびアノテーションファイル (data.jsonl) が含まれます。
-
トレーニングセットのサンプル:wan-image-i2i-training-dataset.zip
-
ZIP パッケージのディレクトリ構造:
wan-image-i2i-training-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大 20 MB ├── 1_0.jpg # トレーニングターゲット画像 (出力) ├── 1_1.jpg # 参照画像 (入力) ├── 6_0.jpg # トレーニングターゲット画像 (出力) └── 6_1.jpg # 参照画像 (入力) -
アノテーションファイル (data.jsonl):各行は 1 つのトレーニングサンプルを表し、JSON オブジェクトである必要があります。
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./1_1.jpg", "img_path": "./1_0.jpg" }
Multi-image-to-image
トレーニングセットには、複数の参照画像 (入力)、トレーニングターゲット画像 (出力)、およびアノテーションファイル (data.jsonl) が含まれます。単一の Image-to-Image とは異なり、Multi-image-to-image は複数の参照画像を同時に入力できます (例:キャラクター写真 + ポーズ画像、最大 9 枚の参照画像)。モデルは、すべての参照画像からの組み合わせ情報に基づいてターゲット画像を生成します。
-
トレーニングセットのサンプル:
-
ZIP パッケージのディレクトリ構造:
wan-image-multi-i2i-training-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大 20 MB ├── 1_0.jpg # トレーニングターゲット画像 (出力) ├── 1_ref.jpg # 参照画像 1 (例:キャラクター写真) ├── 1_pose.jpg # 参照画像 2 (例:ポーズ画像) ├── 6_0.jpg # トレーニングターゲット画像 (出力) ├── 6_ref.jpg # 参照画像 1 └── 6_pose.jpg # 参照画像 2 -
アノテーションファイル (data.jsonl):各行は 1 つのトレーニングサンプルを表し、JSON オブジェクトである必要があります。
input_imgsフィールド (配列型) を使用して、複数の参照画像のパスを渡します。{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./1_ref.jpg", "./1_pose.jpg"], "img_path": "./1_0.jpg" }
-
Multi-image-to-image は
input_imgs(配列) を使用しますが、単一の Image-to-Image はinput_img(文字列) を使用します。この違いにご注意ください。 -
input_imgs配列内の画像の順序は、トレーニングの意図と一貫させる必要があります (例:最初の画像をキャラクター参照、2 番目をポーズ参照として使用)。 -
input_imgsでは最大 9 枚の参照画像を指定できます。
-
data.jsonl は行区切りの JSONL 形式 (1 行に 1 つの独立した JSON オブジェクト) にする必要があります。JSON 配列形式 (ファイルの最初の文字が
[) の使用は許可されていません。 -
ZIP パッケージ内のファイルは、フラットな構造で配置する必要があります。サブディレクトリは許可されていません。ファイル名では英字のみが使用可能です (中国語文字、スペース、特殊文字は使用できません)。
検証セット:オプション
検証セットには、アノテーションファイル (data.jsonl) とオプションの参照画像 (Image-to-Image モードでは必須) が含まれます。ターゲット画像は不要です。各評価チェックポイントで、トレーニングジョブは自動的にモデルサービスを呼び出し、検証セットのプロンプト (および参照画像) を使用してプレビュー画像を生成します。
-
検証セット:
-
Text-to-Image:wan-image-t2i-valid-dataset.zip
-
Image-to-Image:wan-image-i2i-valid-dataset.zip
-
-
ZIP パッケージのディレクトリ構造:
wan-image-i2i-valid-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大 20 MB ├── input_001.png # Image-to-Image モード用の参照画像 (オプション) └── input_002.png -
アノテーションファイル (data.jsonl):各行は 1 つの検証サンプルを表し、JSON オブジェクトである必要があります。
Text-to-Image
{ "prompt": "s86b5p, A person in a crowded morning rush hour subway car, holding onto the handrail, with blurred passengers in the background and tunnel lights visible through the windows, wearing an ordinary office worker white shirt and black trousers, standing facing the camera, half-body shot, realistic candid feel." }Image-to-Image
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./input_001.png" }Multi-image-to-image
Multi-image-to-image 検証セットは、
input_imgs(配列) を使用して複数の参照画像のパスを渡し、最大 9 枚の画像を渡すことができます。{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./input_001.png", "./input_002.png"] }
データ規模と制限
-
データ量:少なくとも 25 枚の画像を用意することを推奨します (より良い結果を得るには 50 枚以上を推奨します)。同じキャラクターまたはスタイルを、複数のシーンやアングルで、一貫した内容の説明とともに使用してください。
-
ZIP パッケージ:API 経由でアップロードする場合、パッケージの合計サイズは 1 GB 以下である必要があります。
-
トレーニング画像の要件:
-
サポートされている画像形式:BMP、JPEG、JPG、PNG、WEBP。
-
画像の解像度は 4096×4096 以下である必要があります。
-
個々の画像ファイルのサイズは 20 MB 以下である必要があります。
-
データ収集とクリーニング
1. ファインチューニングシナリオの決定
Wan は、画像生成に関する以下のファインチューニングシナリオをサポートしています。
-
IP キャラクターのスタイル化:アニメキャラクターやマスコット画像など、特定の IP キャラクターの描画スタイルをモデルに学習させます。
-
固定されたビジュアルスタイル:フラットイラスト、水墨画、ピクセルアートなど、特定のアートスタイルを再現するモデルの能力を向上させます。
-
特定シーンの生成:商品展示画像やポスターレイアウトなど、特定の構図パターンやシーンテンプレートを再現します。
2. 素材の取得
-
AI 生成と選択:Wan ベースモデルを使用して画像を一括生成し、目的の効果に最も一致する高品質なサンプルを手動で選択します。これが最も一般的に使用される方法です。
-
実写撮影:高度にリアルなシーン (実際の商品写真や人物写真など) を実現することが目標の場合、実写素材を使用するのが最良の選択です。
-
3D ソフトウェアレンダリング:細部の制御や 3D レンダリングスタイルが必要なシーンの場合、3D ソフトウェア (Blender や C4D など) を使用して素材を作成することを推奨します。
3. データクリーニング
|
観点 |
ベストプラクティス |
アンチパターン |
|
一貫性 |
コアとなる特徴は、高い一貫性を持つ必要があります。 例: 「フラットイラストスタイル」をトレーニングする場合、すべての画像は同じ線の太さと配色を共有する必要があります。 |
混合スタイル。 データセットに厚塗りスタイルとフラットスタイルの両方の画像が含まれています。モデルはどのスタイルを学習すべきか判断できません。 |
|
多様性 |
被写体とシーンは多様であるほど望ましいです。 さまざまな被写体 (男性、女性、高齢者、子供、猫、犬、建物) とさまざまな構図 (ロングショット、クローズアップ、エクストリームクローズアップ) をカバーします。解像度とアスペクト比もできるだけ多様にする必要があります。 |
単一のシーンまたは被写体。 すべての画像が「白い壁を背景に赤い服を着た人物」を示しています。モデルは「赤い服」と「白い壁」がスタイルの一部であると誤って学習し、異なるシーンで正しく生成できない可能性があります。 |
|
バランス |
データタイプ間でバランスの取れた割合。 複数のスタイルが含まれる場合、数量はほぼ同じである必要があります。 |
著しく不均衡な割合。 90% がポートレート画像で、10% が風景画像です。モデルは風景画像を生成する際にパフォーマンスが低下する可能性があります。 |
|
クリーンさ |
クリーンで鮮明な画像。 邪魔な要素のない元の素材を使用します。 |
邪魔な要素が含まれている。 画像にウォーターマーク、目立つ黒い枠線、またはノイズが含まれています。モデルはウォーターマークをスタイルの一部として学習する可能性があります。 |
|
解像度 |
適度な解像度。 トレーニング画像の解像度は 2048×2048 を超えないことを推奨します。過度に大きな画像はトレーニング時間を増加させます。 |
解像度の変動が大きすぎる。 トレーニングセットに 256×256 の小さな画像と 4096×4096 の大きな画像の両方が含まれていると、トレーニングの安定性に影響を及ぼします。 |
画像アノテーション:画像のプロンプトの記述
データセットアノテーションファイル (data.jsonl) では、各画像に対応するプロンプトがあります。プロンプトは ターゲット画像 の内容を記述します。プロンプトの品質は、モデルが何を学習するかを直接的に左右します。
プロンプトの記述形式
プロンプト = [被写体の説明] + [背景の説明] + [トリガーワード] + [スタイルの説明]
|
プロンプトの構成要素 |
説明 |
推奨 |
例 |
|
被写体の説明 |
画像内の人物または物体を説明します |
必須 |
赤い中国風のロングシャツを着た若い女性... |
|
背景の説明 |
被写体が存在する環境を説明します |
必須 |
背景は緑のつるに覆われたレンガの壁... |
|
トリガーワード |
実際の意味を持たない珍しい単語 |
推奨 |
s86b5p または m01aa |
|
スタイルの説明 |
ターゲット画像のアートスタイルと視覚的特性を詳細に説明します |
推奨 |
フラットイラストスタイルでレンダリングし、クリーンで流れるような線と鮮やかなフラットカラーによって、立体感とモダンなデザインの美しさを強調します。 |
検証データセットによるモデルの評価
検証データセットの指定
ファインチューニングジョブにはトレーニングセットが必須ですが、検証データセットはオプションです。システムによる自動分割、または検証データセットの手動アップロードを選択できます。具体的な方法は以下の通りです。
方法1:検証データセットをアップロードしない (システムによる自動分割)
動画および画像生成モデルファインチューニング API を使用する際、検証データセットを個別にアップロードしない場合 (つまり、validation_file_ids パラメーターを指定しない場合) 、システムは split に基づいてトレーニングセットから検証データセットを分割します。デフォルトは 0.9 で、これは 90% がトレーニングに、10% が検証に使用されることを意味します。
方法2:検証データセットを手動でアップロードする (validation_file_ids で指定)
システムのランダム分割に依存せず、独自に準備したデータを使用してチェックポイントを評価したい場合は、カスタム検証データセットをアップロードできます。
注:手動アップロードを選択すると、システムは上記の自動分割ルールを完全に無視し、アップロードされたデータのみを検証に使用します。
デプロイメントに最適なチェックポイントの選択
トレーニング中、システムは定期的にモデルのスナップショット (すなわちチェックポイント) を保存します。デフォルトでは、システムは最後のチェックポイントを最終的なファインチューニング済みモデルとして出力します。ただし、中間段階で生成されたチェックポイントが最終バージョンよりも優れたパフォーマンスを発揮する場合があります。最も満足のいくものを選択してデプロイできます。
システムは、ハイパーパラメータ (hyper_parameters) の eval_steps で設定された間隔で、検証データセットに対してチェックポイントを実行し、プレビュー画像を生成します。
-
評価方法:生成されたプレビュー画像を直接観察して結果を判断します。
-
選択基準:最も良い結果を出し、スタイルが最も近く一致するチェックポイントを見つけます。
操作手順
ステップ1:チェックポイントによって生成されたプレビュー結果の表示
ステップ2:チェックポイントのエクスポートとデプロイ用モデル名の取得
ステップ3:モデルデプロイと呼び出し
課金
-
モデルトレーニング:有料。
-
コスト = トレーニング総トークン数 × 単価。「トレーニングとデプロイメントの料金」をご参照ください。
-
トレーニング完了後、ファインチューニングジョブの取得 API の
usageフィールドで、トレーニング中に消費されたトークンの合計数を確認します。
次の表は、wan2.7-image、wan2.7-image-pro のトレーニングステップ数と推定コストを示しています。このデータは参考用です。実際のトレーニング結果は最終的な納品内容に基づき、コストは公式の請求書に基づきます。詳細な課金計算式については、「トレーニングとデプロイメントの料金」をご参照ください。
generation_type
画像解像度
一般的なステップ数
推定トークン消費量
推定コスト (USD)
t2i (text-to-image)
1K
500
6,400,000
$96
1,000
12,800,000
$192
2,000
25,600,000
$384
2K
500
11,610,000
$174.15
1,000
23,220,000
$348.3
2,000
46,440,000
$696.6
i2i (image-to-image)
1K
500
11,610,000
$174.15
1,000
23,220,000
$348.3
2,000
46,440,000
$696.6
2K
500
16,000,000
$240
1,000
32,000,000
$480
2,000
64,000,000
$960
-
-
モデルのデプロイと呼び出し:デプロイメントは無料です。呼び出しは、ファインチューニング済みベースモデルの標準料金で課金されます。
モデル ID
LoRA デプロイメントと呼び出し料金
wan2.7-image-pro
0.075 ドル/画像
wan2.7-image
0.03 ドル/画像
API リファレンス
よくある質問
Q:良いトリガーワードを作成するにはどうすればよいですか?
A:ルールは以下の通りです:
-
s86b5p、m01aa、または EVEAven6s8123 のように、実際には意味的な意味を持たない珍しい文字の組み合わせを使用することを推奨します。ベースモデルの語彙において、その文字の組み合わせが意味的な意味を持たないことを確認してください。
-
一般的な英単語 (例:beautiful、fire、dance) の使用は避けてください。これは、これらの単語に対するモデルの本来の理解を汚染するためです。




