お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
ソフトウェア::Stable Diffusion技術::AI

最近流行りということもあり、サクッと使い方とか、使ってみた所感を書いてみます。

Stable Diffusion を使うプラットフォームはどこがいいか?

ローカル

ご自宅のマシンです。お金稼ぐなら多分こっち。
ベンチスコアを見る限り最低でもRTX 4070 Tiがあるといいと思います。
勿論、A100があるならそれに越したことはないですが、270万円するのでまず検討外でしょう。

  • メリット
    • 既に環境があれば電気代しか掛かりません
    • 何をしても怒られません
    • 一回セットアップすれば使い回せます
    • ローカルなので細かい融通が利きやすいと思います
  • デメリット
    • RTX 4090を持ってしてもクラウドにパフォーマンスは劣ると思います
    • 環境構築に非常にお金がかかります。グラボ交換だけで考えてもRTX 4070Ti単体で13万ほどするのでAI絵で利益を出せないと厳しいでしょう

クラウド(Google Colab)

  • メリット
    • 取り敢えず試したいというときにお手頃な価格で始められます
      • Colab Proでも1,200円ほど積めば取り敢えず使えます。無料で使うのは微妙
      • 電気代はタダ同然
    • 圧倒的パフォーマンス
      • 512x512の作画であれば1秒程度。ベンチスコアを見る限りRTX 4090でもここまで短くならないはず
      • Golab Proを使った感じだと基本A100が引けました
  • デメリット
    • 長時間使うと金額が膨らみます
      • AIイラストを売って稼ぐには不向きかもしれません
      • ここは軌道に乗ってきたらローカル環境を組むのを考えてもいいかもしれないですね
    • 毎回セットアップが必要になりがちで面倒
      • Google Driveに全部突っ込んでおけば不要ですが、容量問題が…
    • ファイルのアップロードやColab自体の設定変更などの操作がローカルよりやりづらいです(他人のシステムの上にあるので仕方がない)
    • 生成内容によってはBANされる可能性がある
      • 私はされたことがないですが、稀にされるというのは聞きます

モデルについて

あんまり良くわかってないけど主に次の三種類があるっぽい。拡張子のパターンは他にもあるかもしれないけど把握できてないです。

  • モデル
    • 拡張子は.safetensors, .ckpt
    • 絵柄がこれで決まる
    • 格納先
      • /stable-diffusion-webui/models/Stable-diffusion
  • VAE
    • モデルに内包されている絵柄を決定する要素?
    • 拡張子は.vae.pt
    • 格納先
      • /stable-diffusion-webui/VAE/Stable-diffusion
  • LoRA
    • 個人が作成した追加学習モデル
    • 既にあるモデルに絵柄やポーズ、シチュエーションを追加できる?
    • 拡張子は.safetensors
    • 格納先
      • /stable-diffusion-webui/Lora/Stable-diffusion

Google ColabでStable Diffusionを使う方法

以下のファイルをColabに取り込み、後述する使い方の通りにやれば動くはずです。

https://gist.github.com/Lycolia/cb432ad1b1ce083482b5487c131b5d12

使い方

以下はGoogle Colab Proの利用を想定して書いています。1,179円ほど払うと数時間は使えるのでオススメです。

  1. ipynbファイルを落としてGoogle Colabにインポート
  2. 編集>ノートブックの設定からGPUクラスをプレミアムに変更
  3. Setupセクションの## model以下のコメントを参考に好きなモデルを突っ込む
  4. Setupを実行
  5. Launch web UIを実行
  6. コンソールに以下のリンクが出てくるのでアクセスするとWebUIが開く
    1. https://xxxxxxxx.gradio.live

モデルがある場所

この先のリンクには性的表現が含まれる可能性があります。周囲に注意して開いてください。

  • Civitai
    • かなり豊富なモデルがありますが、知財的に問題があるものも少なくないと思われます
  • stablediffusion WebUI モデル一覧
    • 日本語で色々なモデルがまとめられています
  • 7th_anime_v3
    • アニメ系イラストの定番らしいですが使ったことはないです
  • AbyssOrangeMix
    • 見た感じ結構クオリティが高いものを出力できる

トラブルシューティング

カーネルエラーが出る

FATAL: kernel fmha_cutlassF_f16_aligned_64x64_rf_sm80 is for sm80-sm90, but was built for sm75

もし以下のようにxformersをインストールしている箇所があれば消すと直る

!pip install -q https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.15/xformers-0.0.15+e163309.d20230103-cp38-cp38-linux_x86_64.whl

PyTorch と torchvision のバージョンの整合性があっていないエラーが出る

RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8. Please reinstall the torchvision that matches your PyTorch install.

web UIを起動する前にバージョン指定でコンポーネントをインストールする

!pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1 torchaudio==0.13.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu117

モデルや画面とかいろんなロードが終わらない

30秒以上かかる場合は異常なので画面をリロードすると直ることがある
画面動かない系は基本リロードで直る。多分Colab側の負荷で詰まってる

VAE を設定する方法

  1. Quicksettings listsd_vaeをカンマ区切りで追加
  2. 画面リロード
  3. モデル選択の横にVAEの選択メニューが生えてくる

参考出力作品

プロンプトを深く捏ねてないのでクオリティは微妙ですが、取り敢えずこんなのが出せますというサンプル。
モデルはAbyssOrangeMix3、VAEはkl-f8-anime2を使ってます。

屋敷の森で読書する少女
ジャケットを着たたくあん眉の女性
たくあん眉の女子大生

IPv6のOCNバーチャルコネクト環境ではwell-known portsが利用出来ずWebサーバーを公開するのに支障がありますが、今回はそれを乗り越えるための手法を紹介します。

自宅サーバーにhttps://service.example.com/のようにポート指定なしのサブドメインでアクセスできるようにするのがゴールです。

構成

自宅サーバーの手前にCDNを挟み、CDNを経由して接続させるようにします。要するに手前にリバプロを生やしておくわけです。

user-cloudfront-foreign_server.png

前提

前準備

DNS レコードに次のドメインを作っておく

用途 ドメイン レコード データ
CDN 用のドメイン cdn.example.com A サーバーの IP
公開用のドメイン service.example.com A サーバーの IP

自宅サーバーを公開可能な状態にする

叩き台程度ならserveを使うのが手っ取り早いですが、Node.jsでサーバー立てるのもありだと思います。今回は叩きなのでHTTPにしていますが本番運用するときはHTTPSにしましょう。

以下サンプル

const http = require('http');

const port = 12345;

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello world!');
    console.log(req.headers.host, req.socket.remoteAddress);
});

server.listen(port, () => {
    console.log(`Running at http://localhost:${port}`);
});

手順

  1. CloudFrontを開く
  2. 「ディストリビューションを作成」
  3. 「オリジンドメイン」にcdn.example.comを設定
  4. 「プロトコル」を選ぶ
  5. cdn.example.comの「ポート」を設定する
  6. 設定までスクロール
  7. 「代替ドメイン名 (CNAME) - オプション」で「項目を追加」しservice.example.comを入力
  8. 「カスタムSSL証明書 - オプション」で「証明書をリクエスト」
  9. 「パブリック証明書をリクエスト」
  10. 「完全修飾ドメイン名」にservice.example.comを入力し「リクエスト」
  11. 「証明書を表示」
  12. DNSレコードに「CNAME名」で「CNAME値」を追加
  13. 「保留中の検証」が終わるのを待つ
  14. 「カスタムSSL証明書 - オプション」で作成した「ACM証明書」を選択
  15. 「ディストリビューションを作成」
  16. service.example.comのDNSレコードをCNAMEにし、データを「ディストリビューションドメイン名」に変更
  17. https://service.example.com/にアクセスできればOK

参考資料

トラブルシュート

ディストリビューションを削除したい

  1. ディストリビューションの一覧で消したいのにチェック入れて無効化
  2. しばらく待つ
  3. 消したいのにチェック入れて削除

参考:ディストリビューションを削除する (docs.aws.amazon.com)

後書き

副次的効果ですがCDN挟んでキャッシュされてるお陰で連続アクセスしてもサーバーまでリクエスト来ないので感動しました。

CloudFrontには他にも様々な機能があるみたいなので活用できれば便利そうです。

ローカル環境用の開発ドメインをhttps化する時に使えるやつ
例えばローカル環境に複数のサービスがいて、それぞれをhttps://*.example.com/のようなドメインで管理したい時に使える

確認環境

同じことをすればLinuxとかでも応用できると思う

Env Ver
nginx 1.19.8
mkcert 1.4.3
Windows 10 Pro 19043.1415

手順

  1. mkcert の導入とワイルドカード証明書の作成
    choco install mkcert
    # mkcertを認証局として登録
    mkcert -install
    # 証明書を作成するドメインを列挙
    mkcert example.test *.example.test
    mv _wildcard.example.com+1.* C:/nginx/conf/.ssl/
    
  2. nginxの設定に証明書を記載

    server {
        server_name  dev.example.com;
        listen 443 ssl;
    
        ssl_certificate     ssl/_wildcard.example.com+1.pem;
        ssl_certificate_key ssl/_wildcard.example.com+1-key.pem;
        ...
    }
    
投稿日:
技術::Cookieジャンル::調査

各サービスの振る舞いが少し気になったので適当にサッと軽く見たメモです
ある程度モダンそうなところを適当に選んだので特に観点とかはないです

確認環境

  • Google Chrome 91.0.4472.124(Official Build)
  • Cookie offはファーストパーティCookieをブロックして確認

超簡単なまとめ

サービス Cookie off ログイン JS off
Qiita エラー 一部描画が欠損
Twitter 何も起きない エラー
GitHub エラー 一部描画が欠損
Google エラー 一部描画が欠損, 場合によってエラー
Youtube 未確認 読込中になる
mercari 未確認 読込中になる
DMM 何も起きない 一部描画が欠損, 警告が出る, 一部機能不全
DLSite ログアウトページに飛ぶ 一部描画が欠損, 場合によって例外が出る
Skeb 白紙ページ 白紙ページ
Tayori エラー 一部描画が欠損, 一部機能不全
SoundCloud 何も起きない エラー

Qiita

ログインしようとするとエラーになります

image-1656171614782.png

JS off

ページの一部が欠損しますが、特にエラーは出ない模様

Twitter

ログインしようとするとログインページでループします

image-1656171633639.png

JS off

エラーが出ます

image-1656171647796.png

GitHub

めちゃくちゃシンプルなエラーが出ます

image-1656171657401.png

JS off

ページの一部が欠損し、場所によってはエラーになる模様

image-1656171663805.png

Google

検索ページとログインページで確認

ログインしようとするとエラーになります

image-1656171670802.png

JS off

検索はできましたが、ログインしようとするとエラーになります

image-1656171677370.png

Youtube

Googleと同じなのでパス

JS off

読込中の状態で止まります

image-1656171688195.png

mercari

未確認

JS off

読込中の状態で止まります

DMM

Twitter同様にログインページでループしました

image-1656171751059.png

JS off

ページ上部に通知が生えてきます
ついでにページ表示が崩れたり、一部のページ遷移が機能しなくなりました

image-1656171759245.png

DLSite

ログインしようとするとログアウト処理に飛びました

image-1656171766632.png

カートにアイテムを入れても入りません

image-1656171772865.png

JS off

ページの一部が欠損するので成人向けサイトでも超健全に!

image-1656171779255.png

カートからアイテムを消すと謎のエラーが出ますが、カートからは一応消えます

image-1656171785967.png

skeb

白紙ページになります
Consoleに次のエラーが出るので想定外ということでしょう

DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

JS off

白紙ページになりました

Tayori

エラーになります

image-1656171796586.png

JS off

  • トップページの一部が欠損
  • トップページからヘッダーのリンクを叩くと表示されるコンテンツが白紙に
  • ユーザーのFAQページは検索が動作不能

SoundCloud

ログインできずにループします

JS off

エラーになります

image-1656171803459.png

投稿日:
OS::Windows技術::RDP

Windows標準のリモートデスクトップを使うケース

確認環境

Env Ver
Windows 10 Pro 19042.985

やり方

  1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersにDWORDでDisableTaskOffloadを切り、1を設定してOSを再起動
  2. 適当な音声を再生し、停止したときに遅延がなければOK

備考

  • DiscordやSlackがホストかクライアントでマイクをlistenしてると遅延が起きることがあるので切っておくと安定することがある
  • 数時間起動してると徐々にずれてくるので、その場合は手間になるが定期的にRDPを繋ぎ直すと良い
  • ZOOMなどの通話をする手前で繋ぎ直すと有効だが、通話が長時間に渡ると微妙になる