🚀 Dart (Danbooru Tags Transformer) v2
このモデルは、Danbooruタグを生成する微調整済みのDart (Danbooru Tags Transformer) モデルです。
デモ: 🤗 Space with ZERO
✨ 主な機能
モデルのバリエーション
📦 インストール
🤗Transformersを使用する場合
📦dartrs
ライブラリを使用する場合
pip install -U dartrs
💻 使用例
基本的な使用法
🤗Transformersを使用する場合
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
MODEL_NAME = "p1atdev/dart-v2-moe-sft"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.bfloat16)
prompt = (
f"<|bos|>"
f"<copyright>vocaloid</copyright>"
f"<character>hatsune miku</character>"
f"<|rating:general|><|aspect_ratio:tall|><|length:long|>"
f"<general>1girl, cat ears<|identity:none|><|input_end|>"
)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
with torch.no_grad():
outputs = model.generate(
inputs,
do_sample=True,
temperature=1.0,
top_p=1.0,
top_k=100,
max_new_tokens=128,
num_beams=1,
)
print(", ".join([tag for tag in tokenizer.batch_decode(outputs[0], skip_special_tokens=True) if tag.strip() != ""]))
📦dartrs
ライブラリを使用する場合
from dartrs.dartrs import DartTokenizer
from dartrs.utils import get_generation_config
from dartrs.v2 import (
compose_prompt,
MixtralModel,
V2Model,
)
import time
import os
MODEL_NAME = "p1atdev/dart-v2-moe-sft"
model = MixtralModel.from_pretrained(MODEL_NAME)
tokenizer = DartTokenizer.from_pretrained(MODEL_NAME)
config = get_generation_config(
prompt=compose_prompt(
copyright="vocaloid",
character="hatsune miku",
rating="general",
aspect_ratio="tall",
length="medium",
identity="none",
prompt="1girl, cat ears",
),
tokenizer=tokenizer,
)
start = time.time()
output = model.generate(config)
end = time.time()
print(output)
print(f"Time taken: {end - start:.2f}s")
高度な使用法
プロンプト形式の詳細
prompt = (
f"<|bos|>"
f"<copyright>{copyright_tags_here}</copyright>"
f"<character>{character_tags_here}</character>"
f"<|rating:general|><|aspect_ratio:tall|><|length:long|>"
f"<general>{general_tags_here}<|identity:none|><|input_end|>"
)
-
レーティングタグ: <|rating:sfw|>
, <|rating:general|>
, <|rating:sensitive|>
, nsfw
, <|rating:questionable|>
, <|rating:explicit|>
sfw
: general
またはsensitive
レーティングカテゴリのタグをランダムに生成します。
general
: general
レーティングカテゴリのタグを生成します。
sensitive
: sensitive
レーティングカテゴリのタグを生成します。
nsfw
: questionable
またはexplicit
レーティングカテゴリのタグをランダムに生成します。
questionable
: questionable
レーティングカテゴリのタグを生成します。
explicit
: explicit
レーティングカテゴリのタグを生成します。
-
アスペクト比タグ: <|aspect_ratio:ultra_wide|>
, <|aspect_ratio:wide|>
, <|aspect_ratio:square|>
, <|aspect_ratio:tall|>
, <|aspect_ratio:ultra_tall|>
ultra_wide
: 極端に横長のアスペクト比の画像に適したタグを生成します。(~2:1)
wide
: 横長のアスペクト比の画像に適したタグを生成します。(2:1~9:8)
square
: 正方形のアスペクト比の画像に適したタグを生成します。(9:8~8:9)
tall
: 縦長のアスペクト比の画像に適したタグを生成します。(8:9~1:2)
ultra_tall
: 極端に縦長のアスペクト比の画像に適したタグを生成します。(1:2~)
-
アイデンティティタグ: <|identity:none|>
, <|identity:lax|>
, <|identity:strict|>
- このタグは、指定された一般タグ内のキャラクターまたはサブジェクトのアイデンティティをどれだけ厳密に保持するかを指定します。
none
: 指定された一般タグが非常に少ない場合に推奨されます。非常に創造的にタグを生成しますが、時には一般タグの条件を無視することがあります。
lax
: 一般タグ内のキャラクターまたはサブジェクトのアイデンティティを維持したい場合に推奨されます。このタグは、入力された一般タグと矛盾するタグを生成しないように試みます。
strict
: 一般タグ内のキャラクターまたはサブジェクトのアイデンティティを強く維持したい場合に推奨されます。このタグは、lax
よりも厳密に入力された一般タグと矛盾するタグを生成しないように試みます。ただし、創造性が低いため、strict
の結果が気に入らない場合は、lax
またはnone
を試してみてください。
📚 ドキュメント
モデルの詳細
モデルの説明
学習の詳細
学習データ
このモデルは以下のデータセットで学習されました。
学習手順
TODO
前処理 [オプション]
[詳細情報が必要]
学習ハイパーパラメータ
学習中に使用されたハイパーパラメータは以下の通りです。
- learning_rate: 0.00025
- train_batch_size: 1024
- eval_batch_size: 256
- seed: 42
- gradient_accumulation_steps: 2
- total_train_batch_size: 2048
- optimizer: Adam (betas=(0.9,0.999), epsilon=1e-08)
- lr_scheduler_type: cosine
- lr_scheduler_warmup_steps: 1000
- num_epochs: 4
評価
評価はまだ行われておらず、評価が必要です。
モデルのアーキテクチャと目的
このモデルのアーキテクチャはMixtralです。詳細はconfig.jsonを参照してください。
コンピューティングインフラストラクチャ
大学の研究室のサーバー
ハードウェア
8x RTX A6000
ソフトウェア
関連プロジェクト
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。