今更Stable Diffusionを動かす

Posted on

まぁ、その、暇だったので、はい。

Twitterで日々バトルが繰り広げられる学習側の権利や、生成物の権利云々に関しては、

古くは今の著作権の元となった福沢諭吉の主張した版権から繰り返された、「情報はコピーも改変も配布も容易」なことに纏わる話の変奏曲の一種で1、コンピュータの世界でなら、

のようなことを、また繰り返している。こういう穴をつくのは商売の世界ではありふれた話で、あとは文化庁で審議しつつ法律の整備待ちで、意見があるならTwitterで殴り合ってないで、パブリックコメントを出したり政治活動をしたり、訴訟して最高裁まで持ち込むなどするとよいのではないではないでしょうか、ここはなんとまだ民主主義国家なので、とだけ。

あぁ、もちろん法規制が整うまでに色々ビジネスやるのもよくある話です。ぼくから言えることは、ビジネス上の競合だけでなく、周りの警備会社の人や証券会社の人雇った社員も含めて、その他大勢の人に刺されないようにも、気を付けるといいかもしれませんね。じゃあな、ご武運を。

それは置いといて。逆に美術の「模倣とそれに対する人間のいさかい」の歴史にはうといので、ご存じの方が居たら教えてもらえると助かります。

あ、あと、逆に生成AIで作ったものに著作権が認められるか(著作物性があるか)に関してもまだ議論中ですが(文化庁の資料p.39)、とりあえずわたしはこの記事の中で、わたしが自分のマシンを使って生成した画像について著作権を主張するつもりはありません。

…というクソ長い前置きの元はじめます。

UIを動かすぞい

Stable Diffusionそのままだと雑に動かすのは大変だと思ったので、定番っぽい stable-diffusion-webui をうごかしました。

環境は以下:

  • Ryzen Threadripper 1950x
  • DDR4 64GB
  • Radeon 6800XT
  • Ubuntu 24.04
  • Python 3.12.3
  • Rust 1.82.0 via rust-init

もう7年くらい前のPC2で、今はsshでつなぐサブの開発用マシンになってるんですが、実はあんまり性能が足りなくて困るという事はなかったりします。PC、進歩ねぇなぁ。

基本的には動かし方のマニュアル通りに動かしました。コロコロ変わると思うのでいちいち記録にはしません。

案の定コケる

[Bug]: issue with tokenizers · Issue #16445 · AUTOMATIC1111/stable-diffusion-webui

ここにある不具合そのものに突き当たりました。コメントだとPython 3.10じゃないからではないかとか、rustcのバージョンが新しいから(!)ダメなのではないか、といった議論があるのですが、Rustに関してはIssueに「解決した」とされるver 1.65.0まで下げても同じエラーでしたし、そもそもコンパイルエラーは casting &T to &mut T is undefined behavior と正当に思えるものですから3、rustのバージョンはそのまま1.82.0のまま動かすことにしました。

結果として、次で(わたしの環境では)動きました。

  1. transformersのライブラリを上げる。
    requirements_versions.txt の transformersのところを`transformers==4.34.0`に変更する。
    このバージョンの依存関係(の依存関係?)にあるrustのソースの該当箇所はunsafeで括ってる(大丈夫なのかな…)
  2. transformersのあるAPIで同じ挙動をする(はず)の2つのパラメータの与え方があるので、もう1つの方に変更する

しれっと書いてますけど、3時間ぐらい掛かりました。別のYouTuberの限界分譲地の謎の雑談生放送を聞いてる時の暇つぶしにはちょうどよかったかな、とだけ。

(´-`).。oO(…なんか自分で描いた方が速くないか…)

Pythonの依存関係解決には、すこしだけ詳しく…なったような…。地獄ですねこれ。requirements.txtいい加減そろそろやめた方がいいんじゃない?w

こういうのを仕事として依頼したい時は、ぼくの会社の方にメールください(ダイマ)。もっとめんどくさくてもやるよ~(もちろんお金はもらいますけどもw)。

この件に関してプルリクを作ったのですが、このエラー自体はPythonとRustの、CPUの世界だけで閉じてるのですが、それでも環境によって起きたり起きなかったりするよくわかんない不具合のようで、一旦closeしました(後で書くけど、もうこのソフト飽きたので、ぼくがopenする事はないだろうが…)。2024年になっても、まだこんな感じなんですねぇ。もう2年経ったんだけどな。

出力するぞい

さて、ためしにFediverseの人が呟いてたジョークをそのまま入れました

この結果は、まさにおどろくべきものになりました。「ありがとう」という言葉を見せた水は明らかに、六角形のきれいな形の結晶をつくりました。それに対して「ばかやろう」の文字を見せた水は、結晶がばらばらに砕け散ってしまいました。そして、「masterpiece,best quality:1.4,super fine illustration,shiny skin,detailed skin,detailed face,detailed eyes,an extremely cute and beautiful girl,cowboy shot,beautiful face」という言葉を見せた水は、どこかで見たことがあるような美少女っぽい結晶をつくりました。
https://oransns.com/@Lincade/113386014063650493

この「呪文」自体はとりあえず最初に置いておくと効力を発揮する?ようで、このまんまの完全一致で検索を掛けるとこの後に色々自分で追加してる人が割と見つかります。「うらら迷路帖」で言うと「祝詞」みたいなもんだろな。…東西東西皆々さまに さあさあ八卦の八つ当たり4

さて占いの結果はこちら。ガチャなんでなんか蓮コラみたいになってるやつが最初出て来たんですが5、流石に貼る気にはなれなかったので何回か回した結果になります。ちなみにイラストか実写かはプロンプトにillustrationって書いてあるのにガチャでした。その辺はGANの頃と一緒かな。これは実写と言っていいでしょう。

「cowboy shot」に引っ張られてるのかカウボーイ(カウガール?)になってます。ウケますね。これ思い出したわ(2021年。リンク先は生成AI特有のグロ画像注意)、なつかし:

…元の話に戻る(?)と、Stable Diffusionは「水」以下ってとこですかね?どうおもいます?

ちちぷいの呪文を試しにそのまま入れる

天使ちゃん | chichi-pui(ちちぷい)AIイラスト専用の投稿&生成サイト

ログインするとプロンプトがそのまんま出てくるのでそのまんま入れます。seedも書いてあるので同じやつ入れます。結果:

全然ちげぇじゃねぇか! LoRAを入れるのが前提なのかな。そうなると、生成AIででがちといわれる美少女の顔、いわゆる「マスピ顔」って、「よく使われてるLoRAでのマスピ顔」って事になるのかなぁ。LoRAもいろいろあるみたいから、うまいこと調合しないと元みたいな絵は出てこないんでしょうね。この辺は追いかける気力もないので「たぶん」という事にしておきます。

あぁ、そうそう、seedを一緒にしないとマジで全然違う絵しか出てきませんし、半分以上はマジで単なるキモいだけのノイズです。

(´-`).。oO(…やっぱ…なんか自分で描いた方が速くないか…)

【追記】「マスピ顔」はNovelAI発祥(らしい)です。NovelAIはモデルみんなで共有だもん、なるほどね。マスピ顔を拝んでみたかったのがこれやった理由の1つではあるんですけど、そっか、拝めないのか…。

SDXLも試してみる

モデルが2つ分かれてて、拡散モデルだけではなく、VAEというAutoEncoderの子孫みたいなやつのモデルもあるので、適当なフォルダに放り込んでください、腐るほど解説はあるのでもう書きません。

同じプロンプト、同じseedにして出した結果がこちら:

試しに3つとも並べますね:

SDXLで「よく」なったかどうか、あるいは元のもふくめてこの3枚のうちどれが「いい」かの判断は皆さまにお任せします。あくまで絵ですからね。どれがいいのか、それは最後はあなたのクオリア次第でございます。「どれもいい」とか、「どれもダメ」という感想も、もちろんありでしょう。「何も感じない」とかもありかもね。必ず比較しないといけないとか、そもそも感想を持たないといけない、わけじゃあ、ないんですよ?

ランサーズを観察する

ここまで来てなんとなく思いませんか、「思ったほど楽じゃねぇぞこれ」と。機械さえ揃えても、Pythonの依存関係の依存関係のRustのコードのコンパイルが通らない問題を解決しないと激キモゴミノイズ1枚出ません。3時間で解決できたのは、ぼくがかれこれ25年も、そういう事を繰り返しているからであって、「コンピュータはじめてです!」みたいな人にお願いしたら、それこそ最低限数か月で掛かってもおかしくないと思います。ぼくが絵の練習を数か月したように、です。

さてそうなると予感が出来ますね。これ仕事になるんじゃないのと。なってます:

AI画像生成の外注・制作依頼はプロの個人に – ランサーズ

人間は本当に女の人の裸が好きですね(やっぱり「R18」だと料金あがるんですねw)

それはおいておいて、こんな注意書きを見つけました:

◆注意事項
【要望について】
AI画像生成はガチャと呼ばれるように運の要素が大きく作用します。要望が多いほどすべてを反映させることは難しくなるため、盛り込みたい要素を絞ることがコツになります。
また、女性と男性の描かれ方にも差があります。一般的には男性より女性の方が丁寧に描かれるので、この点もご留意ください。
要望が必ずしもすべて反映されるわけではないことをご理解ください。

これで食うプロ、ぼくよりはるかに使いこなせるプロですら、こうらしいです。

(´-`).。oO(…やっぱ…自分で描いた方が速くないか…)

リンクは貼りませんが、破綻してる絵を加筆修正するのも仕事になってます。「生成済みで破綻していない絵のコレクションからお渡しします」という商売もありました。渡したところで相手が再配布するモチベーションがないことを利用してるわけですね、よく考えるわ。

IT各社の喧伝する煌びやかなデモより、ぼくはこういうのを眺めてる方が好きです。

ちなみに人間が描く方もあります:

イラスト作成・制作の依頼・外注ならプロの個人に! – ランサーズ

相場はどっちもピンキリですけども、やっぱり人間の方が高いみたいです。とはいえ、10倍は違いませんが。生成AIが出て安くなったのかどうかは分からないです。

もし2年前に、登場した瞬間に、Stable Diffusionを動かしていたら、きっとこの話は出来なかったでしょう。そう思うと、「今更」動かしたわけですけど、案外「悪いタイミング」でもなかったのではないかと思います。

そろそろ飽きてきた

生成AIで生成したとする、プロの出力した「広告・HP掲載・バナー・パンフレットなど宣伝材料としてご自由に利用していただけ」る”””素晴らしい画像”””の数々を見てたら胃もたれしてきました。この話はそろそろやめようと思います。蓮コラみたいなキモいノイズももう見たくないし。ディスクストレージを節約するために rm -rf したうえで、電気代も勿体ないので、マシンの電源も落としました。

さてさて、みなさま、FirefoxとAdBlockで「心の戸締り」をお忘れなく!スマホ?あれは広告を見るための機械だから固定電話かガラケーに乗り換えろ。

全然コンヴィヴィアルじゃない

イリイチのことばでいうところの、全然コンヴィヴィアルじゃない道具だなぁといった印象でした。第二の分水嶺超えちゃってます。

一言で言うとね。

道具を使ってるんじゃなくて、道具に使わてるの。

パソコンで絵を描くときの最強ツール

そうそう、パソコンでお絵描きをするときはKritaっていうソフトがおすすめですよ。無料です。が、ぜひ寄付してあげてください。それだけすごいんで。

他のソフトよりレイテンシーが低いし、筆圧だけでなく傾きにも対応しているので気に入ってます。おい聞いてるか、アルパカ?色の扱いもほぼ完ぺきで、DisplayP3でもCMYK各種でも描けます。16bitのキャンバスでHDR画像だって描けます。おい聞いてるか、クリスタ?

強いてマイナスポイントを上げるとすれば、ブラシの選択画面がすこし見にくいかな。ロゴしか描いてなくて、他のソフトみたいに実際に描くとどんな感じになるかのプレビューが無いんです。ただ、要望は結構上がってるので、そのうち対応されるかもしれませんし、正真正銘のオープンソース・ソフトウェアですから、あなたがC++を書けるなら、コミュニティに参加してその機能を実装することだってできるでしょう(もちろん、他の開発メンバの説得とかは必要だよ。喧嘩はダメ!)。

ああ、そうそう。有料のSteam版もあって、手数料分はValveに持ってかれますが、残りは寄付になります。自動でバージョンアップしてくれるのは便利なので、これはこれでオススメです。ちなみにぼくは寄付した上でSteam版使ってます。それでも他の商業ソフトより払った金額全然安いけどね…。

ただし。現実の水彩や油彩のような表現の「再現」には限度がありますし、RGBの三原色モデルの限界がありますから、たとえばラメ入りの絵具のように、見る角度によって色が変わるような絵は描くことはできません。現代の、そしておそらくは将来的にも、コンピュータの性能の限界として、あんまり大きな絵も描けません(A3かA2ぐらいが限界じゃないかな)。そこで行き詰ったら、「デジタル」だけにこだわるのは、やめてみるのはどうでしょう?わたしは透明水彩も色鉛筆もパステルも、今でも使ってますよ。水彩はまだまだ修行中と言ったところですが。これらの道具は、パソコンのソフトとかと違って、混ぜて使う事もできます。自由度は恐ろしく高いです。ただし、その分悩むことも多いです。悩むのが楽しくもあるんですけどね!

野暮だけどどうしても貼っつけときたくなるやつ

2020年5月にはもう存在した画像です。この画像を拵えたやつも、相当上位の「うらら」だろうな。ぼくは最低でも三番占か、それより格上なのは間違いないとみてます6

個人的には「機械学習」だの「AI」だの「統計的手法」だのといったカテゴライズではなく、伝統的な「命」「卜」「相」のカテゴライズを採用した方が見通しがよくなると思う時がよくあります。「しくみ」だけにこだわるのは、コンピュータ「だけ」のオタクの、悪いクセだぞ。

  1. 海外の歴史を掘れば聖書の写本やグーテンベルクまで遡るでしょうね []
  2. GPUだけ10年くらい前のものを流用していたので、4年くらい前に換装しました []
  3. なんで普通の参照を可変参照にするコードが通るんだよ 教えはどうなってんだ教えは!…だって、便利だし?そういう問題じゃねえ!(略) []
  4. これはニナ先生の茶の葉占いの祝詞です []
  5. MidjourneyやNovelAI、MSやGoogle、OpenAIの中の人には、蓮コラが出ないようににらめっこしながらデバッグしてる人が居るんだろうか…お疲れ様です []
  6. 無茶苦茶野暮ですけど、これはひとりぼっちで死ぬ気で勉強してきた秀才・紺が持ってるのがポイントなんですよ、わかってます?(?) []

ショート:私たちは、幸せになるために生きている。

Posted on

「へへ、これは、お前らの文明に滅ぼされたほかの文明の文化の分だ!」と言いながら勢いよくLLMとお絵描きAIを破壊していこう。

ぼく「滅べ人類!これはインカ帝国の分だ!」

あなた「インカ帝国って何?(AIに聞く)」

「インカのめざめ1kgセット、今なら20% OFF。10分以内のご注文で、今日の夜までにお届け。今なら育ちざかりのお子様のいる忙しいご家庭向けの夕飯用かんたんレシピARデータもプレゼント!

【行動ナビ】以下が本日の次の予定です。3分後に…」

あなたはコンテクストを忘れて買ってしまう。よかった、今日は忙しいらしいからな。精力的に仕事をする。家に帰る。置き配でいつもの笑顔のマークのダンボールが転がっている。あなたは何を買ったかは覚えていない。でもAIが教えてくれる。あなたは言う通りに従って食材や包丁やフライパン、電子レンジなどをただARマーカーに沿って操作する。目の前には豪華で映える夕飯が広がっている。もちろん、あなたはSNSでシェアをする。いいねがたくさんつく。翌日、あなたの子供は起きてこず、起こしても動かない。これがSNSでよく流れてくる反抗期ってやつなのか。あなたは要はどうすれば良いか分からないので、もちろんいつも通りAIに聞く。いわれた通りにデータを送る。「死んだ」というらしい。なんだろう?見慣れない言葉だ。専門用語だという。とにかく言われた通りに最寄りの病院に自動運転のタクシーで連れていく。医師はもちろん最新のAIを使ってあなたの子供を見る。医師は、こうなった原因はわかりませんが、最新の研究でも、これはもう動かず、喋らないことはわかっています、これからリサイクルの手続きを、という。最新のAIでお手上げとなれば仕方がないと、あなたはあきらめる。しかし、と医師は続け、もう500万円頂ければクローンの子供というものが用意でき、云々。よくわからないが、AIを使って要約すると、とにかく、また、あなたの子供は、喋ったり動くようになると言う。へぇ便利な世の中になったものだ。あなたは買ってしまう。そうして、あなたは無事に問題を解決し、また仕事に戻ることができる。あなたはまた動く子供が見れて頭をなでることができ、どうやってつけたかは忘れた名前を呼ぶと反応するのを眺めることができ、家族と職場とSNSに何かをシェアできるので、チェックシートのすべての項目が満たされ、しっかりと満足する。

ここまで読めなかったあなたへの要約:世界のGDPと平均株価は上がり続ける。私たちは幸せになるために生きている。

これで、いいだろう?よーし、win-winのようだな。

元ネタ

気が付くとぼくの絵が国立博物館に所蔵されている事になっていた件 by Gemini

Posted on

ねんむいでケロな :: the gear of seasons

この絵は、日本の画家、伊藤若冲(1716-1785年) によって描かれたものと思われます。若冲は、動植物を写実的に描いた絵画で知られています。この絵も、カエルの体の細部まで忠実に描かれています。

この絵は、日本の国立博物館に収蔵されています。

Gemini曰く

どうやらぼくは、時間を超え、江戸時代に国立博物館に所蔵されるような国宝級の絵を描いてしまっていたらしい。まさか、商業画家を通り越して、いきなり国宝級の絵を描いてしまったなんてなぁ…無双系「なろう」みたいなことが本当にあるとは。現実は、小説より奇なりとは、まさにこのことだね(棒読み)。

ちなみにカエルが目を閉じる時は、目は頭のなかに引っ込みます。食べる時には目をとじて引っ込めて、喉の方に押し込むんだってさ。

Alternative Factsとか言ってた頃が懐かしい

ちなみにこれ、毎回結果が変わります。真実は、サイコロで決まる!

github から forgejo に移行しました

Posted on

引き続きgithubへの「ミラーリング配信」は行います。issueもgithubの方へ書いて頂いて大丈夫です。

Forgejo とは何か

見た方が早いでしょう。githubみたいな、だけど自分のサーバでも動かせる何かです。

公式サイト:Forgejo – Beyond coding. We forge.

(2024/02/10 追記) 翻訳始めました

#74 – [AGREEMENT] ledyba application to the localization team – forgejo/governance – Codeberg.org

翻訳する人がいないなら…もう自分でやるしかないじゃない!あなたも!わたしも!

なぜ移行したのか

まぁ突き詰めると「最近のGithub、なんか『違う』な」ってだけなんですけど、ためしに列挙してみましょう。全部は無理だと思うけど。

倫理観や定義がグローバル基準ではない

サンプル画像として用いている弊サークルのイラスト(複数)が、githubではないものの、海外のイラストサイトから「児童ポルノ」という事で実際にBANされた事がありました。わたしたちは、「児童」も「ポルノ」も、描いてるつもりは、ないのですが…? 小説、レシピ、(作曲した)曲、3Dモデルなど、一般的には「ソフトウェア」とは呼ばれないであろうジャンルのリポジトリもあります。これらすべてについてまで「グローバル基準」な倫理の判定を行われた際に、違反しない自信がありません。以前でしたら「どうせそこまでチェックしてないし、技術的にも資本的にも無理だし、まぁいいか」でしたが、なんでもかんでもTokenにして「AI」と書かれた脳みそのイラストにすべてが放り込まれ、「生産性の向上」「ソフトウェア・サプライチェーンのセキュリティ」なるものがひたすらに叫ばれる昨今、雑に機械で判定されてBANされてしまう危険性は高まっていると感じています。利用規約でも「わいせつ」なものはダメだと書いてあります。その定義をよんでも、わたしには、何が何だか、さっぱり意味が分かりませんでしたが…。

まぁ、わたしのアカウントがBANされるまでなら「バックアップしとけバーカ」で終わるのですが、参照されてしまうと、使っている人も困ってしまいます。オープンソース、ですからね。そんなわけで、弊サーバでホストしつつ、githubへのミラーリングという二段構えの構成をとることとしました。

Githubが寡占しすぎで怖い

なぜ人は寡占をすると付け込まれる事を覚えないのでしょうか。mixiもTwitterも、IE6も、もう忘れたか?

寡占したら次に始まるのは何でしょう?

そう、ロックインですね。まだ逃げ出せる今のうちに、移行しておかなければ、という気持ちになったので、えいやっ!とやりました。

Github Copilot 押しが、あまりにもきな臭く感じる

右上の “Code 55% faster with GitHub Copilot” にご注目ください。

これ料理のレシピですよ?これ55%速くなります?Githubくんは、適当な事を、書いてるだけですよね?Github Copilotくんが料理を作って味見して「おいしい料理のレシピ」を、ぼくの倍速で作ってくれるんですか?

どうも観察すると、Rustだろうが、PHPだろうが、6502のアセンブリだろうが、Cubaseのプロジェクトだろうが、55%速くコーディングできるそうです。

アポロ11号のカルマンフィルタの実装も、もちろん、Github Copilot を使えば55%高速に書けるとPRしています。アポロ11号がギリギリ60年代の1969年に着陸して「遅延」したのも、NASAはGithub Copilotへの課金をケチった馬鹿野郎の集まりだからなんでしょうかね?

kotoba.phpには色々な人の、人生に裏打ちされ、丹精に込めて紡がれたであろう、そんな言葉が、たくさん含まれています。これら言葉も、みな、”Code 55% faster with GitHub Copilot” なのだそうです。ほんと、いい加減にしろよ。

これがもしできて、そして、これにお金を出せる酔狂な人は、ぜひ「Copilot Workspace自身」と「仕様を明瞭に記述」したとき、その通りに出力してくれたか教えてください。できたら、あともう料金払わなくてすみますよ。そうじゃなかったら?詐欺だよね?やっぱりもう料金払わなくて、いいよね?

「Git版Fediverse」であるForgefedに期待だ

さて、このforgejo、設定次第ではあるのですが、今建てたインスタンスではユーザー登録は基本的に管理人しかできません。2人ユーザーがいますが、わたしがアカウントを払いだしました。するとgithubのように「ふらっとやってきた人が、不具合を報告していく、直していく」とか、そういう事は基本的にできません。まぁ、それも、ほんとうに、「ごくたまに」しか、発生しないし、いや、でも、昔は掲示板でも置いとけばアカウント登録なんかしなくても不具合の報告ぐらいは、できたんですけどね。そもそもforkボタンなんか押さなくたって、gitコマンドがあればforkはできますし。よくわかんないや。

まぁいいや。しかしながら、たまには誰かが開発に参加してくれたりするのも、事実でございます。

まぁメールでもブログのコメント欄でも、連絡をくれればアカウント作るぐらいはできますよ。実際、それで十分な時もあります。それでも敷居が高い?しょうがないにゃあ・・。いいよ。そんな時の仕組みとして、今頑張って開発されているのがFederation機能、通称ForgeFedです:

プロトコルないし理念:

実装:

短文ブログに比べればかなり機能は多く、実装は難しいものの、歩みも熱量もゼロではありません。技術的にも原理的にも、不可能ではないことも分かり切っています。そのうち、なんとかなるんじゃないかなと思っています。

短文ブログのFederationがはやり始めてから、7年になろうとしています。たしかに「メインストリーム」には、なっていないかもしれませんが、だからこそ、穏やかに続いている。そんな印象です。オープンソースでfederationが出来ても、あるいは出来なくても、そんな感じに落ち着くんじゃないでしょうか。これはわたしの「夢」も半分、なのかもしれませんけどね。

Github”なんか”おっせーよなぁ

forgejoの方が速いよなぁ:

帰ってVPSでforgejo建てようぜ

githubからのbackupには、次のgithubにあるスクリプトを使わせてもらいました:

githubを以てgithubを制す。バイドを以て、バイドを制す

まぁ一周しただけなんだけどね

昔は同じドメインに建てたSVNサーバ使ってました1

git-svn-id: http://ledyba.org/svn/src/Applications/ServerSideWebApps/buffalin@1 74a9cb86-dd52-4021-9b0c-c77737e5d92d · aec3b4320d – ledyba/Buffalin – ledyba.org

githubくんはもう忘れちゃったそうですが

「GitHub」で「Subversion」プロトコルのサポートが終了 – 窓の杜

  1. たぶん自作サーバですね。そのうちVPSも厳しくなってきて、自宅サーバに戻るかもしれません。ただ、いつまで家に公開IPv4/v6アドレスが来るのだろうか…。 []