StreamDiffusion:Windows 平台建置與初次驗證

Ted Liou 2025.06.07 StreamDiffusion 最後更新 2026.03.17

快速摘要

Windows 上要把 StreamDiffusion 裝到能穩定跑,關鍵不在於指令多快背完,而是先把版本組合抓對。本文以官方文件仍明確記載的 Python 3.10、PyTorch 2.1.0 與 CUDA 11.8 或 12.1 為基準,整理一套比較不容易踩雷的建置流程,最後用 Img2Img 與 Txt2Img 各做一次驗證。

現在還要在 Windows 上建 StreamDiffusion,真正會把人卡住的通常是版本。官方 README 目前仍以 Python 3.10、PyTorch 2.1.0,以及 CUDA 11.8 或 12.1 這組合來說明安裝流程。這組先站穩,後面才有餘裕去談 NDI、OSC,或把它接進 TouchDesigner 與 Unity。

如果只是想快速跑一次官方範例,照 README 直接用 pip install streamdiffusion[tensorrt] 就可以了。不過此系列接下來會自己改傳輸流程,也會直接動到 utils/wrapper.py 這條路,所以本文採用「自己建 Python 專案,再把 StreamDiffusion 的核心程式放進來」的做法。這不是唯一的安裝方式,但後續維護會比較清楚。

左邊是輸入給 StreamDiffusion 的 3D 動漫風格女生影像,右邊是 StreamDiffusion 的 2D 動漫風格即時輸出結果 StreamDiffusion 的目標就是把影像生成推到足夠即時,讓它能進入互動系統之中。

先把版本策略講清楚

在動手安裝之前,先把這篇的版本基準講清楚,後面比較不會一路猜。

  • Python:3.10。
  • PyTorch:2.1.0。
  • CUDA 對應的 PyTorch Wheel:cu118cu121
  • StreamDiffusion 安裝來源:GitHub 主線或 PyPI 穩定版都可以,但本文採用 GitHub 專案內容來整理自己的開發環境。

PyTorch 官網現在已經列出更新的 CUDA 組合,像是 12.4、12.6。但 StreamDiffusion README 目前仍明確列的是 torch==2.1.0 搭配 cu118cu121。如果現在的目的只是先把系統建起來,我會建議先走文件還有明確寫出的組合,不要一開始就把變數放大。

以本文使用的 SD Turbo、512x512 生成尺寸來看,實務上我會建議顯示卡至少有 8GB VRAM,系統記憶體至少 16GB。再低仍然有機會跑起來,只是速度和穩定性都會變得很難看。

安裝 CUDA

如果電腦已經有能正常工作的 NVIDIA 驅動與 CUDA 環境,先確認版本即可。請開啟命令提示字元,輸入:

1nvcc --version

如果指令能正常顯示版本,代表電腦裡已經有 CUDA Toolkit。只要你的環境能對應到後面要安裝的 cu118cu121 PyTorch Wheel,就可以繼續往下做。

如果指令失敗,再去安裝 CUDA Toolkit。這裡不用執著追最新版本,先以本文後面要使用的 cu121 路線為主即可。Windows 端只要先把這一層穩定下來,後面比較不會出現「PyTorch 裝好了但模型跑不起來」這種看起來很像玄學的狀況。

命令提示字元的畫面,中間紅框標示出 CUDA 版本資訊

安裝 uv 與 Python 3.10

本文延續這個系列一貫的做法,用 uv 來管理 Python 環境。原因很簡單:它在 Windows 上建立虛擬環境和同步套件都夠快,之後要重建專案也比較乾淨。

先安裝 uv

1powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

如果當前的命令列還沒有抓到 uv,可以把安裝路徑補進 PATH:

1SET PATH=%PATH%;%UserProfile%\.local\bin

接著安裝 Python 3.10:

1uv python install 3.10

我刻意不把小版本寫死成 3.10.17 這類數字,原因很單純:StreamDiffusion 官方要求的是 3.10 系列,而 uv 會抓到可用的 3.10 版。這樣後面不用因為 Python patch 版變動,再回頭重改整篇文章。

%UserProfile%/.local/bin 內已經出現 uv.exe 與 uvx.exe

建立可編輯的 StreamDiffusion 專案

這一段的重點,在於建立一個後面方便自己改的工作目錄。

先建立資料夾,用 VS Code 開啟,然後在終端機輸入:

1uv init
2uv venv --python 3.10

這一步完成後,資料夾內會出現 main.pypyproject.toml 等檔案。之後我們主要會改這兩個地方。

用 VS Code 開啟的空資料夾畫面,準備建立 Python 專案

完成 uv init 與 uv venv 後,資料夾內已經出現 Python 專案基本檔案

取得 StreamDiffusion 的核心程式

官方 README 對一般使用者建議直接安裝套件;但這個系列後面會自己接傳輸流程,所以我還是會把核心程式攤開來放在專案裡。做法不複雜,就是先 clone,再把我們真的會動到的資料夾抽出來。

1git clone https://github.com/cumulo-autumn/StreamDiffusion.git

下載完成後,專案裡會多一個 StreamDiffusion 資料夾。接著把 src/streamdiffusionutils 移到目前專案根目錄:

1powershell Rename-Item -Path "StreamDiffusion" "StreamDiffusion_Bak"
2powershell Move-Item -Path "StreamDiffusion_Bak\\src\\streamdiffusion" "streamdiffusion"
3powershell Move-Item -Path "StreamDiffusion_Bak\\utils" "utils"
4powershell Remove-Item -Recurse -Force "StreamDiffusion_Bak"

這樣整理完之後,我們自己的專案根目錄就會直接看到 streamdiffusionutils 兩個資料夾。之後無論是改 Wrapper、補 NDI、補 OSC,結構都比較直。

透過 git clone 下載官方專案後,資料夾內多出 StreamDiffusion

把核心程式移出來之後,專案根目錄留下 streamdiffusion 與 utils

安裝 PyTorch 與依賴套件

這裡是整篇最容易被版本拖下水的地方,所以我直接用文件中還有明確記錄的組合來整理。

設定 PyTorch 的來源

請先打開 pyproject.toml,把以下內容補到檔案後面。本文以 cu121 為基準:

 1[[tool.uv.index]]
 2name = "pytorch-cu121"
 3url = "https://download.pytorch.org/whl/cu121"
 4explicit = true
 5
 6[tool.uv.sources]
 7torch = [
 8  { index = "pytorch-cu121", marker = "sys_platform == 'win32'" },
 9]
10torchvision = [
11  { index = "pytorch-cu121", marker = "sys_platform == 'win32'" },
12]

PyTorch 官網現在確實有更新的 CUDA Wheel,但因為本文是照 StreamDiffusion README 的安裝基準來建,先用 cu121 反而比較省事。

在 pyproject.toml 中加入 PyTorch 來源設定,讓 uv 從 cu121 Wheel 下載套件

對齊 StreamDiffusion 的依賴版本

接著,把 dependencies 改成下面這組版本。這份列表是以 StreamDiffusion 當前 setup.py 的依賴為主,再補上 torchtorchvision

 1dependencies = [
 2    "accelerate",
 3    "colored",
 4    "cuda-python",
 5    "diffusers==0.24.0",
 6    "fire",
 7    "omegaconf",
 8    "onnx==1.15.0",
 9    "onnxruntime==1.16.3",
10    "protobuf==3.20.2",
11    "pywin32>=310",
12    "torch",
13    "torchvision==0.16.0",
14    "transformers",
15    "xformers"
16]

原本那種「自己一路加到能跑」的 dependency 列法,在當下可能有效,但時間一拉長就很容易和官方程式實際依賴脫節。這裡直接對齊 setup.py,後面踩雷的機率會低很多。

將 StreamDiffusion 依賴套件整理進 pyproject.toml

最後執行同步:

1uv sync

走到這裡,環境基本上就算建立完成了。

先用 Img2Img 做第一次驗證

我會先用 Img2Img 驗證,因為它能同時檢查模型、影像前處理和輸出是否都正常。

先自行準備一張圖片放到專案根目錄,檔名命名成 image.png

準備一張要交給 StreamDiffusion 做 Img2Img 的參考圖片

接著把 main.py 改成下面這段:

 1from utils.wrapper import StreamDiffusionWrapper
 2
 3
 4def main():
 5    stream = StreamDiffusionWrapper(
 6        model_id_or_path="stabilityai/sd-turbo",
 7        t_index_list=[24, 32],
 8        width=512,
 9        height=512,
10        acceleration="xformers",
11        mode="img2img"
12    )
13    stream.prepare(prompt="cat, detailed, fantasy, 8k")
14
15    input_image = stream.preprocess_image("image.png")
16
17    for _ in range(stream.batch_size - 1):
18        stream(image=input_image)
19
20    output = stream(image=input_image)
21    output.save("result.png")
22
23
24if __name__ == "__main__":
25    main()

執行程式:

1uv run main.py

第一次跑會先下載模型,所以需要等一下。只要最後專案裡能正常生成 result.png,代表這條路已經通了。

透過 StreamDiffusion 的 Img2Img 生成結果

再用 Txt2Img 補第二次驗證

Img2Img 通了之後,再用 Txt2Img 補一次驗證,主要是確認文字生成這條路也沒問題。

main.py 改成下面這段:

 1from utils.wrapper import StreamDiffusionWrapper
 2
 3
 4def main():
 5    stream = StreamDiffusionWrapper(
 6        model_id_or_path="stabilityai/sd-turbo",
 7        t_index_list=[0, 24, 32],
 8        width=512,
 9        height=512,
10        cfg_type="none",
11        acceleration="xformers",
12        mode="txt2img"
13    )
14    stream.prepare(prompt="cat, detailed, fantasy, 8k")
15
16    for _ in range(stream.batch_size - 1):
17        stream()
18
19    output = stream()
20    output.save("result.png")
21
22
23if __name__ == "__main__":
24    main()

一樣執行:

1uv run main.py

如果 result.png 正常產生,代表 Windows 上的 StreamDiffusion 核心功能已經可以用了。後面我們再把這個「本來只能改程式碼、重新執行」的生成流程,改造成可以被外部系統即時控制的版本。

透過 StreamDiffusion 的 Txt2Img 生成結果

FAQ

為什麼本文不用最新的 PyTorch 與 CUDA 組合?

因為 StreamDiffusion README 目前仍明確記載 torch==2.1.0cu118cu121 這條安裝路徑。PyTorch 官網確實已經提供更新的 Wheel,但如果現在的目標是先把 StreamDiffusion 穩定跑起來,先跟文件還有寫出來的版本走,風險會低很多。

為什麼不直接照官方 README 用 pip install streamdiffusion[tensorrt]

如果只是要跑官方範例,直接裝套件沒有問題。本文之所以改成把 streamdiffusionutils 放進自己的專案,是因為後面我們要自己接 NDI、OSC,也會改 Wrapper。這時把核心程式攤開來會比較好維護。

總結

Windows 上的 StreamDiffusion 建置,真正要先處理的是版本組合,而不是先急著找範例。本文把基準收斂到官方文件目前仍明確記載的 Python 3.10、PyTorch 2.1.0 與 CUDA 11.8 或 12.1,再用 uv 整理成本地可編輯的專案,最後用 Img2Img 與 Txt2Img 各做一次驗證。只要這一層穩了,後面要把它接進互動系統,工作量才會落在「設計流程」而不是「救環境」。

本文提到的版本與安裝基準,請參考:

作者

Ted Liou

現職 Unity C# 工程師,主要分享 Unity、C# 與 Vibe Coding 相關技術教學。

上一篇 VS Code + uv:建立 Python 開發環境與 `.venv` 管理流程 下一篇 Minecraft 2026 基岩版光影推薦:Vibrant Visuals 現況、資源包選擇與安裝教學