yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

備忘録: 今更Stable Diffusion WebUI (A1111)セットアップ on Windows, ただしuvで

はじめに

以下は実際のコマンド履歴を下にAIに書かせた内容。

1. uv と Python 環境

cd C:\msys64\home\yumetodo\stable-diffusion-webui
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "C:\Users\yumetodo\.local\bin;$env:Path"
uv python pin cpython-3.10.6-windows-x86_64-none

2. 仮想環境作成

uv venv

3. 必須依存ライブラリ

uv pip install -r requirements.txt
uv pip install pytorch-lightning==1.9.4
uv pip install "pydantic<2"
uv pip install git+https://github.com/openai/CLIP.git
uv pip install sentencepiece
uv pip install "gradio==3.41.2"

4. PyTorch (CUDA 12.6 対応ビルド)

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

5. 高速化ライブラリ (任意)

uv pip install xformers==0.0.32.post2 --index-url https://download.pytorch.org/whl/cu126

6. リポジトリ補助モジュール

mkdir repositories
cd repositories
git clone --filter=blob:none https://github.com/Stability-AI/stablediffusion.git stable-diffusion-stability-ai
git clone --filter=blob:none https://github.com/Stability-AI/generative-models.git
git clone --filter=blob:none https://github.com/salesforce/BLIP.git
git clone --filter=blob:none https://github.com/crowsonkb/k-diffusion.git
git clone --filter=blob:none https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets.git
cd ..

stable-diffusion-stability-aiいらんきがする

7. モデル配置

  • models/Stable-diffusion/.safetensors または .ckpt を置く
    例: v1-5-pruned-emaonly.safetensors

8. 起動

uv run .\webui.py --xformers

✅ ポイント整理

  • Python 3.10.6 を固定 → WebUI が安定
  • PyTorch cu126 を直接インストール → RTX 3060 + CUDA 12.6 ドライバで動作
  • pydantic<2API モデル生成エラー回避
  • clip / sentencepiece → SD 系モデルのテキストエンコーダ依存を解決
  • stable-diffusion-webui-assets → UI 静的ファイルエラー回避
  • xformers → 高速化(任意)

⚠️ 注意

  • SD3.5 系 (Medium / Large / Turbo) は A1111 本家ではまだ未対応。
    → ComfyUI や SD.Next を使うのが現実的。
  • A1111 本家で安定して動かすなら SD1.5 / SD2.1 / SDXL 1.0 がベスト。

2025年07月時点のvscodeのcline拡張からAWS Bedrockのモデルを使う方法

はじめに

個人利用なら正直わざわざAWS Bedrockを使う意味があるのかは疑問なのだが、まあ会社がそうしてるので、同じ構成に近づけとくほうが考えることが減って良さそうである。

前提

  • AWSのアカウント自体はある
    • 請求情報が古くなってたので更新するなどはした
  • Amazon Bedrockを使ったことはない
  • VSCodeには手元とRemote(ArchLinux)両方にclineの拡張は入れたけどそれ以上は何もしてない
  • ホスト: Windows11
  • VM: archlinux
  • VSCode Remote-SSHを使用してvmのarchlinux上で作業するしclineも使う
  • archlinux にaws cli 導入済み

Bedrock利用開始

自分は気分でオレゴンリージョン(us-west2)を選んだ。リージョンによっては使えないモデルとかあるので注意する。

モデルアクセス→モデルアクセスの変更で利用したいモデルを選んで

初回は↓みたいなことが聞かれるが日本語で書いて通った。

数時間から数日なんて話もあったが、今回は1分かからず通過した。

IAM

会社だとIAM Identity Centerを使ってるのでAWS SSOしてるのだが、個人では別に有り難みがないし、何よりもめんdなので伝統と信頼のAccessKey/SecretKeyを使うことにする。

こんな感じのポリシーを作る。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "bedrock:ListInferenceProfiles",
                "ce:GetDimensionValues",
                "bedrock:InvokeModel",
                "ce:GetCostAndUsage",
                "bedrock:InvokeModelWithResponseStream",
                "ce:GetCostForecast",
                "ce:GetUsageForecast"
            ],
            "Resource": "*"
        }
    ]
}
  • Resource: 厳密にやるならAI Modelをここで指定するのだろうが、そこまでしたい需要がないのでAnyに
  • bedrock:ListInferenceProfiles: なくてもいいのだが、aws bedrock list-inference-profilesコマンドを叩きたいのでつけてる。

あとはこれを割り当てたIAMユーザーを作ってAccessKeyを発行する

~/.aws/config

[bedrock]
region = us-west-2
output = json

~/.aws/credentials

[bedrock]
aws_access_key_id = <access key here>
aws_secret_access_key = <secret key here>

のように記述する。aws configureコマンドで作ったらdefault profileにされたので手動でファイルを書き換えてbedrockにリネームした。別にdefaultじゃなきゃ何でも良いのだが。

Clineの設定

~/.cline/config.yaml

provider: bedrock
region: us-west-2

models:
  - id: us.anthropic.claude-sonnet-4-20250514-v1:0
    name: Claude Sonnet 4
    provider: bedrock

  - id: us.anthropic.claude-3-7-sonnet-20250219-v1:0
    name: Claude 3.7 Sonnet
    provider: bedrock

  - id: us.anthropic.claude-3-haiku-20240307-v1:0
    name: Claude 3.5 Haiku
    provider: bedrock

  - id: us.deepseek.deepseek-coder:20240601
    name: DeepSeek-R1
    provider: bedrock

us.のprefixの意味は後述するが、リージョンによって読み替えが必要。

  • API Provider: Amazon Bedrock, AWS Profile
  • AWS Profile Name: bedrock
    • awsのprofile名に合わせる
  • AWS Region: us-west-2
    • modelを利用申請したリージョン
  • Use Prompt caching: true
  • Model: Custom
  • Model ID: arn:aws:bedrock:us-west-2:679122520526:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0
    • 後述するように推論プロファイルのみ対応するモデルを使う場合は推論プロファイルARNをかかないといけない。
  • Base Inference Model: anthropic.claude-sonnet-4-20250514-v1:0
推論プロファイル

AIくんに解説させた。↓

推論プロファイルは、AWS Bedrockの機能であり、生成AIのコストとリソース使用率を管理・追跡し、回復性とスループットを向上させるために設計されています。

  • 推論プロファイルの種類:
    • システム定義(クロスリージョン推論プロファイル): Bedrockサービスによって事前に定義されており、モデルのリクエストを複数のリージョンにルーティングすることで、回復性を高め、トラフィックの急増を管理します。これらは、サポートするモデルと対象リージョンに基づいて命名され、例えば us.anthropic.claude-3-7-sonnet-20250219-v1:0 のような形式をとります。
    • アプリケーション定義(ユーザー定義)推論プロファイル: ユーザーが作成し、コストとモデルの使用状況を追跡したり、カスタムのコスト配分タグを適用したり、リクエストを単一または複数のリージョンにルーティングしたりするために使用されます。
  • 特定のモデルにおける必須性: 重要な点として、Claude Sonnet 4やClaude 3.7 Sonnetのような一部のモデルは、オンデマンド利用であっても、推論プロファイルを介した推論のみをサポートしています。これは、ベースモデルIDを直接使用して呼び出すことができないことを意味します。

Claude Sonnet 4のようなモデルがオンデマンド利用であっても推論プロファイルを必須とするのは、AWSが推論プロファイルを新しい/より高度なモデルの基盤となる抽象化レイヤーとして利用していることを示唆しています。これにより、基盤となるインフラストラクチャの管理、クロスリージョンルーティングなどの機能の実装、およびリソース割り当てのより効果的な最適化が可能になり、同時に「従量課金制」の料金モデルを提供することができます。このような設計パターンは、モデルの呼び出しとリソース管理を一元化する役割を担っています。

Model ID

一口にModel IDといっても色々ある。またしてもAI解説↓

呼び出し方法 modelId形式の例 使用例 備考
ベースモデルID anthropic.claude-sonnet-4-20250514-v1:0 推論プロファイルを必要としないオンデマンドモデルの直接呼び出し。 特定のモデルでは、オンデマンドであっても推論プロファイルが必須となる場合があります。
システム定義推論プロファイルID us.anthropic.claude-sonnet-4-20250514-v1:0 クロスリージョン推論など、システムが管理する推論プロファイルを介したモデル呼び出し。 Claude Sonnet 4など、一部のモデルではオンデマンド利用でもこの形式が必須です 1。地域プレフィックス( us.など)が含まれます 24。
推論プロファイルARN arn:aws:bedrock:us-east-1:123456789012:inference-profile/my-sonnet-profile ユーザーが作成したアプリケーション推論プロファイルを介したモデル呼び出し。コスト追跡やカスタムルーティングに利用。 modelIdパラメータにARNを指定します 8。
プロビジョンドスループットARN arn:aws:bedrock:us-west-2:123456789012:provisioned-model/my-custom-model-pt カスタムモデルや、専用キャパシティを持つベースモデルの呼び出し。 modelIdパラメータにARNを指定します 25。

推論プロファイルARNをどうやってしらべるかだが、

$ aws bedrock list-inference-profiles --region us-west-2 --profile bedrock | jq '.inferenceProfileSummaries[] | select(.inferenceProfileName | test("Claude Sonnet 4"))'
{
  "inferenceProfileName": "US Claude Sonnet 4",
  "description": "Routes requests to Claude Sonnet 4 in us-east-1, us-east-2 and us-west-2.",
  "createdAt": "2025-05-20T00:00:00+00:00",
  "updatedAt": "2025-07-25T19:30:55.377390+00:00",
  "inferenceProfileArn": "arn:aws:bedrock:us-west-2:679122520526:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0",
  "models": [
    {
      "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
    },
    {
      "modelArn": "arn:aws:bedrock:us-east-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
    },
    {
      "modelArn": "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
    }
  ],
  "inferenceProfileId": "us.anthropic.claude-sonnet-4-20250514-v1:0",
  "status": "ACTIVE",
  "type": "SYSTEM_DEFINED"
}

こんな感じでinferenceProfileArnが求まる。これをするためにIAMにbedrock:ListInferenceProfilesを足しているのである。

雑にLinuxでDisk性能とか見る方法

hdparam

$ hdparm -tT  /dev/mapper/vg_00-lv_root

/dev/mapper/vg_00-lv_root:
 Timing cached reads:   15752 MB in  1.99 seconds = 7920.19 MB/sec
 Timing buffered disk reads: 602 MB in  3.01 seconds = 200.17 MB/sec

fio

[global]
ioengine=libaio
iodepth=1
size=1g
direct=1
runtime=60
directory=${TARGET}
stonewall

[Seq-Read]
bs=128k
rw=read

[Seq-Write]
bs=128k
rw=write

[Rand-Read-512K]
bs=512k
rw=randread

[Rand-Write-512K]
bs=512k
rw=randwrite

[Rand-Read-4K]
bs=4k
rw=randread

[Rand-Write-4K]
bs=4k
rw=randwrite

みたいな設定ファイルを作って

# mkdir fio_target
# TARGET_DIR="$(pwd)/fio_target"
# ls -l
-rw-rw-r-- 1 yumetodo yumetodo  329  8月 14 16:24 fio.txt
drwxr-xr-x 2 root     root      6  8月 14 16:30 fio_target
# TARGET=${TARGET_DIR} fio -f fio.txt --output-format=json | tee /tmp/fioresult_hostname.json

すると計測できる。あとはjqでjq '.jobs[]|select(.jobname == "Seq-Read")|{"128kread_bw_bytes": .read.bw_bytes}'とかして必要なやつだけ取り出す

UnixBench

Dhrystone 2 using register variables       39643828.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     6746.9 MWIPS (8.9 s, 7 samples)
Execl Throughput                               3371.3 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        533058.1 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          140689.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1581604.7 KBps  (30.0 s, 2 samples)
Pipe Throughput                              669822.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  80602.7 lps   (10.0 s, 7 samples)
Process Creation                               7833.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5743.2 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1241.8 lpm   (60.0 s, 2 samples)
System Call Overhead                         415196.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   39643828.0   3397.1
Double-Precision Whetstone                       55.0       6746.9   1226.7
Execl Throughput                                 43.0       3371.3    784.0
File Copy 1024 bufsize 2000 maxblocks          3960.0     533058.1   1346.1
File Copy 256 bufsize 500 maxblocks            1655.0     140689.9    850.1
File Copy 4096 bufsize 8000 maxblocks          5800.0    1581604.7   2726.9
Pipe Throughput                               12440.0     669822.4    538.4
Pipe-based Context Switching                   4000.0      80602.7    201.5
Process Creation                                126.0       7833.5    621.7
Shell Scripts (1 concurrent)                     42.4       5743.2   1354.5
Shell Scripts (8 concurrent)                      6.0       1241.8   2069.6
System Call Overhead                          15000.0     415196.9    276.8
                                                                   ========
System Benchmarks Index Score                                         949.0

みたいな結果が得られる