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

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

私「これが軽い読み物だって?」~Wixのドキュメントがハリー・ポッターを思い出させる件

問題の文章

docs.firegiant.com

For now, we’re focusing on properties that MSI sets for us. MSI has a lot of built-in properties; if you’re looking for a bit of light bedtime reading, you can see the official documentation of them all here.

日本語訳(DeepL)

現時点では、MSIが設定するプロパティに焦点を当てています。MSIには多くの組み込みプロパティが存在します。軽い就寝前の読み物をお探しなら、公式ドキュメントで全プロパティを確認できます

私「これが軽い読み物だって?」

ハリー・ポッターと賢者の石より(映画版)

だいぶ記憶が飛んでるがこんなシーンがあったはず(小説版はもうちょっとサラッと流されている記憶)。

ハーマイオニー「これ、ちょっとした軽い読み物として借りてきたの」

ロン「これが軽い読み物だって?」

経緯としてはニコラス・フラメルが何者かを探していたハリー達三人が蛙チョコレートのカードで発見したことを契機に

harrypotter.fandom.com

ハーマイオニーがクソでかい本を2人の前にドンッと置いてさっきのやり取りがあったような気がする。

余談

この話をうちの社内のSlackで取り上げた。

死ぬほど眠いからさっさと実働だけ取っておわろう


Anonymous

大事なのは「就寝前の」ということですね


リンク貼り忘れたけどここに載ってる話でした https://docs.firegiant.com/wix/tutorial/sprint4/about-properties/

For now, we’re focusing on properties that MSI sets for us. MSI has a lot of built-in properties; if you’re looking for a bit of light bedtime reading, you can see the official documentation of them all here.

Now, I'd like to ask you is it (l|r)ight?


Anonymous

Right. ちょっと(light)読めば、たちまち眠りに落ちることでしょう

備忘録: 今更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を足しているのである。