adiaryの痒い所をちょこちょこ直している。上の画像にはないがCtrl + Vでクリップボードの画像をアップロードできる機能も付けている。
変更差分はもっぱらGitHubで管理していて、今日も最新版に追従させたところだ。
最近はOGPを強制出力するようにしたり、今日はSyntax HighlightをPrism.jsに置き換えるなどしていた。
adiaryはDiscordのようにChromeに詐称してくるBOT相手だとOGPが出ないし、標準のSyntax Highlightはしょっぱい。
比較用に元のやつを撮っておくのを忘れてしまったが、正直かなり良くなったと思う。
スマホで見たときに行折れせずスクロールできるようになったのも良い。
Mastodonの最大アップロードサイズを変更する
確認環境
Env | Ver |
---|---|
Mastodon | v4.5.0-alpha.2 |
nginx | 1.26.1 |
手順
- Mastodonのapp/models/media_attachment.rbの
IMAGE_LIMIT
,VIDEO_LIMIT
,MAX_VIDEO_MATRIX_LIMIT
,MAX_VIDEO_FRAME_RATE
,MAX_VIDEO_FRAMES
辺りをいい感じに直す - nginxのmastodon用設定を開き、
client_max_body_size 100m;
をいい感じに直す - mastodonとnginxを再起動する
- 適当にデカいファイルをあげて確認する
- 確認用ファイルを消したい場合は、
public/system/media_attachments/files/
にあるので消す
Mastodonの最大投稿文字数を増やす
確認環境
Mastodon v4.5.0-alpha.2
手順
投稿可能な文字数を増やすを参照。
注目タブを固定した投稿に変更する
確認環境
Mastodon v4.5.0-alpha.2
やり方
割と力押してやったのでイケていない。
- 変更時の差分を参考に改造
資材のビルドを行い、Webを再起動
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile
必要に応じてsudo chown -R mastodon /home/mastodon
で所有権を戻しておく。
TL周りのCSSをいじる
確認環境
Mastodon v4.5.0-alpha.2
手順
app/javascript/styles/mastodon/components.scss
を適当に編集資材のビルドを行い、Webを再起動
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile
必要に応じてsudo chown -R mastodon /home/mastodon
で所有権を戻しておく。
AUTOMATIC1111の更新は長らく止まっており、新しいツールを探していてComfyUIを試したりしていたのだが、Hire fixに相当する機能に当たることが出来ず、どうにもイマイチだった。
そこでかつてAUTOMATIC1111からフォークされ、AUTOMATIC1111にマージされたForgeからreForgeが新たに派生していることを知ったので試してみたが、これがかなり良かった。生成速度は爆速になったし、複数キャラの絡みも自然にできるようになった。
reForgeは既に開発が停止しているようだが、逆に言えば安定していると言う事でもある。
というわけで試した結果をつづっていく。
導入
git pull
したらwebui.bat
叩いて終わりなので特筆することはない。AUTOMATIC1111とディレクトリ構造が同じなので、extentionやmodel, loraなどの環境はそのまま引っ越せる。
爆速化したベンチマーク
前回のベンチマークでは平均生成速度2.911it/s、生成時間120秒だったが、今回は平均生成速度4.352it/s、生成速度81秒まで短縮された。
これは前回最速を記録したUltra 7 265F + 4070Tiを12秒も凌ぐ速度で、極めて速い。正直コスパでNovelAIと勝負できるレベルだ。
ベンチマーク構成
ソフトウェア
reForegeにxformersは不要とのことで、xformersを入れていない。
Env | Ver |
---|---|
version | f1.0.0v2-v1.10.1RC-latest-2446-ge1dcf9b4 |
python | 3.11.9 |
torch | 2.7.1+cu128 |
xformers | N/A |
gradio | 3.41.2 |
ハードウェア
前回とマザボが変わっているが、これによる差はないだろう。
デバイス | 製品 |
---|---|
CPU | Intel Core Ultra 7 265F |
GPU | GeForce RTX 5070 Ti |
MEM | Crucial CT2K16G56C46U5 * 4 |
M/B | ASRock Z890 Pro RS |
りこベンチ
ベンチマーク用の設定
コマンドライン引数なしでwebui.bat
を実行
設定 | 値 |
---|---|
Model | ntrMIXIllustriousXL_xiii.safetensors [1207404b17] |
Clip skip | 2 |
ENSD | 31337 |
Propmpt | (illustration:1.0), masterpiece, best quality, 1girl, solo, happy, smile, theater, (perspective:1.3), from below, (looking away:1.2), (from side:1.0), {{shot_hair}}, smile, bangs, shaggy, (brown hair:1.1), swept_bangs, thick_eyebrows, skin_fang, closed mouth, {{purple eyes}}, gray {{jacket}}, white shirt, glasses, {{small breasts}}, |
Negative Prompt | nsfw, (worst quality, low quality:1.4), (depth of field, blurry, bokeh:1.5), (greyscale, monochrome:1.0), multiple views, text, title, logo, signature, (tooth, lip, nose, 3d, realistic:1.0), dutch angle,(cropped:1.4), text, title, signature, logo, (loli:1.2), school satchel, pink, school bag, school uniform, from behind |
VAE | Automatic |
Sampleing method | DPM++ 2M |
Hires. fix | True |
Upscaler | Latent |
Hires steps | 0 |
Denoising strength | 0.8 |
Upscale by | 2 |
Sampleing steps | 20 |
Width | 768px |
Height | 768px |
Batch count | 5 |
Batch size | 1 |
CFG Scale | 7 |
Seed | -1 |
生成ログ
20/20 [00:02<00:00, 6.90it/s]
20/20 [00:11<00:00, 1.70it/s]
20/20 [00:02<00:00, 6.96it/s]
20/20 [00:11<00:00, 1.71it/s]
20/20 [00:02<00:00, 7.06it/s]
20/20 [00:11<00:00, 1.70it/s]
20/20 [00:02<00:00, 7.14it/s]
20/20 [00:11<00:00, 1.70it/s]
20/20 [00:02<00:00, 6.98it/s]
20/20 [00:11<00:00, 1.67it/s]
200/200 [01:21<00:00, 2.46it/s]
200/200 [01:21<00:00, 1.66it/s]
前回のベンチマークでは平均生成速度2.911it/s、生成時間120秒だったが、今回は平均生成速度4.352it/s、生成速度81秒まで短縮された。
平均生成速度
4.352it/s (前回比 +1.441it/s)
生成時間
81秒 (前回比 -39秒)
まとめ
明らかに爆速になった。これだけ早ければ何の文句もない。総合点でNovelAIと勝負できるレベルといっても過言ではないだろう。
複数キャラを配置できるForge Coupleの力
Forge CoupleというExtentionsが出ており、これを使うと複数キャラをNovelAI並みの自然さで配置できる。安定性ではNovelAIには敵わないのだが、無料で勝負できるところに価値がある。これがあればもうRegional Prompterは窓から投げ捨てていい。
Forge Coupleを使えばこのレベルは朝飯前だ。因みにこれはサンプルプロンプトそのままに近いが、キャラ同士の絡みも実現できる。
キャラ同士の絡ませ方の例(NSFW)
例えば、以下の条件であれば、ふたなりアスナと直葉の断面図あり挿入シーンという難題さえこなして見せる。かなりドギツイのが出てくるので試したい人はプロンプトをよく確認してほしい。かなり地獄のようなワードが入りすぎている。
nsfw, hentai illust, {num: 2girls}, 1dickgirls and 1girls, wet hair, drool,wet and messy, {cup: asuna to suguha}, very aesthetic, masterpiece, no text, from side, female sex, female sex from behind, female only
{num}, {cup}, couple, girl, kirigaya suguha, sao, large breast, large areola, white skin, (bob cut), armpit hair, pubic hair, doggy style, x-ray, creampie, ahegao, full body
{num}, {cup}, couple, dick girl, asuna (sao), A adult tall beauty crossdresser,shemale, little breasts, sagging breats, (dark nipple), little long nipples,wetty hair, hentai anime , long gloves and high socks, enjoying,smile,heart eyes, erection foreskin dick,smegma, armpit hair, pubic hair, hairy, tatoo,normal dick, sex, cum in cevio, ahegao, full body,
Negative prompt: lowres, artistic error, film grain, scan artifacts, worst quality, bad quality, jpeg artifacts, very displeasing, chromatic aberration, dithering, halftone, screentone, multiple views, logo, too many watermarks, negative space, blank page, low quality, child, text, speaking, censored. male, boy, male sex, 1boy
Steps: 20, Sampler: DPM++ 2M, Schedule type: Karras, CFG scale: 6, Seed: 1605499267, Size: 768x512, Model hash: c3688ee04c, Model: waiNSFWIllustrious_v110, Denoising strength: 0.85, Clip skip: 2, Hires CFG Scale: 6, Hires upscale: 2, Hires upscaler: Latent, forge_couple: True, forge_couple_compatibility: False, forge_couple_mode: Advanced, forge_couple_separator: \n, forge_couple_mapping: "[[0, 1, 0, 1, 1], [0, 0.5, 0, 1, 1], [0.5, 1, 0, 1, 1]]", forge_couple_common_parser: { }, Pad conds: True, Version: f1.0.0v2-v1.10.1RC-latest-2446-ge1dcf9b4
ポイントは一行目のfrom side, female sex, female sex from behind, female only
と、2~3行目のキャラクター設定行にある{num}, {cup}, couple,
だ。
まずfrom side
のように構図を指定していないと破綻しやすい。NovelAIのようにいい感じにはしてくれない。
次にふたなり百合をする場合、female sex, female sex from behind, female only
辺りがあると良い。男が出てくる確率が目に見えて減る。
キャラクター設定についても{num}, {cup}
で一行目の変数を参照し、プレイスタイルや人物属性の設定を強めることで出現率が大幅に向上する。またcouple
を付けることで、二人が出てくる確率が上がる。これがないと一人しか出てこなかったり、男が出てくる確率が増える。
トラブルシューティング
ノイズ画像が生成される
この様なノイズ画像が生成される時に「Number of Couples and Masks mismatched」というエラーが出ている場合、余計な空行が入っているのが原因なので、それを消すと直る。
Empty lines are still counted; ensure you do not leave an empty line at the end;
先日、Ubuntu実機IPv6シングルスタック環境にMastodonを入れた時に軽く改造していたが、どうせならGitHubで管理したいよね、するなら他所みたいに本家をフォーク下リポジトリでやりたいねと思ったので、やってみた。
やったこと
- 本家リポジトリをフォークしたリポジトリで作業できる下地を作成
- Mastodon v4.4.3からMastodon v4.5.0-alpha.2にアップデート
- VSCodeのRemoteSSHを利用し、本番環境でのバックエンドとフロントエンドの軽微な改修を行い、普段使っているGit環境でGitHubに署名付きコミット
- 引用リブログ対応
快適な作業環境を作る
毎回sudo su - mastodon
してコンソールからゴリゴリやるとか苦行でしかないのでVSCodeのRemoteSSHでしばけるようにする。
- mastodonグループに自分を入れてVSCodeで直に触れるようにする
sudo usermod -aG mastodon $USER
- VSCodeを落として再起動してSSHを繋ぎ直す
- 普通に編集やコミットが出来るようになっていればOK
- コミットするときにCIが走るが本番向け設定では動かないので、
--no-verify
を付けてターミナルからコミットする
本家最新と合流する
- 本家リポジトリからフォークしたリポジトリを作る
- リモートリポジトリを切り替える
git remote remove origin git remote add origin <自分のリポジトリURL>
ビルドする
# mastodonのホームに環境があるため、ここだけはユーザー切り替えが必要 sudo su - mastodon # 依存関係の更新 gem update --system # Ruby本体の更新 RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install # この設定がないとエラーが出てbundle installできなかった export LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2 # Gemのインストール bundle install # JSやCSSなどのフロントエンドのビルド RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile # 再起動、念のためにstop->start sudo systemctl stop mastodon-{web,sidekiq,streaming} sudo systemctl start mastodon-{web,sidekiq,streaming}
コードのいじり方
正直よくわかっておらず雰囲気でやっている。
Ruby本体
.rb
ファイルをいじった後にmastodon-webサービスを再起動で恐らくOK。streaming関係を触ったらそっちの再起動も必要だろう。
フロントエンド
CSSやVue周りのファイルをいじった場合はビルドのために以下のコマンドを流す必要がある。サービスの再起動が必要かどうかまではよくわかっていない。
RAILS_ENV=production bundle exec rails assets:clobber
RAILS_ENV=production bundle exec rails assets:precompile
引用リブログの有効化
こういう奴をできるようにする方法。
.env.production
を開きEXPERIMENTAL_FEATURES=outgoing_quotes
を追記。
この手の実験的機能のフラグはenvironment.tsに定義されているものが使えると思われる。カンマ区切りで利用するようだ。
やっておいた方がいいこと
.bashrc
や.zshrc
など、mastodonユーザーが使っているシェルの設定に以下の環境変数を足しておく。毎回叩くの面倒なので。
export RAILS_ENV=production
export LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2
トラブルシューティング
「/lib/x86_64-linux-gnu/libjemalloc.so.2 cannot allocate memory in static TLS block」エラーへの対処
以下のエラーが出る場合、export LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2
を打ち込んでおくと改善した。
Unfortunately, an unexpected error occurred, and Bundler cannot continue.
First, try this link to see if there are any existing issue reports for this error:
https://github.com/rubygems/rubygems/search?q=%2Flib%2Fx86_64-linux-gnu%2Flibjemalloc.so.2++cannot+allocate+memory+in+static+TLS+block+-+%2Fhome%2Fmastodon%2Flive%2Fvendor%2Fbundle%2Fruby%2F3.4.0%2Fgems%2Fdate-3.4.1%2Flib%2Fdate_core.so&type=IssuesIf there aren't any reports for this error yet, please fill in the new issue form located at https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md. Make sure to copy and paste the full output of this command under the "What happened instead?" section.