SenseNova-U1 實戰體驗:從網頁版生成,到 Mac 踩坑,再到 CUDA 伺服器跑通本地部署

![](https://i.imgur.com/ZWCl3Pq.jpeg)

最近試了一輪商湯開源的 SenseNova-U1。我一開始不是奔著「跑分」去的,而是想確認一件更實際的事:它到底能不能從線上體驗過渡到本地部署,尤其是像我這種日常主力是 Mac 的開發環境,最後能不能把流程真的跑通。

這篇文章按我的實際操作順序寫:先看網頁版效果,再記錄 Mac 本地嘗試,最後切到 CUDA 伺服器完成部署和生成測試。中間有成功,也有失敗。我盡量把命令、報錯和判斷都放出來,因為這些比只貼一張最終效果圖更有參考價值。

先理解 SenseNova-U1:它不是單純的文生圖模型

官方介紹裡,SenseNova-U1 的關鍵字是 NEO-Unify,定位是「原生統一多模態理解與生成」。這點和傳統多模態方案不太一樣:很多模型是一個視覺編碼器接一個語言模型,生成任務再接另一個圖像生成模組;而 SenseNova-U1 強調把理解、生成、圖像編輯、圖文交錯等能力放進統一架構裡。

從架構圖看,它同時覆蓋左側的理解類任務和右側的生成類任務。理解側包括文字理解、視覺語言理解、知識推理、Agent 決策、空間智能;生成側包括圖像生成、圖像編輯、資訊圖生成、交錯圖文生成、統一推理。

這個定位也決定了我後面的測試方向:不只看它能不能出圖,還要看它在部署鏈路裡是否能穩定載入、是否吃顯存、是否對解析度有約束。

官方也放了不少 benchmark 對比,能看到 SenseNova-U1-A3B-MoTSenseNova-U1-8B-MoT 在多個理解、編輯、生成任務上和其他模型對比。

我這次實際部署用的是 sensenova/SenseNova-U1-8B-MoT。原因很簡單:A3B-MoT 更大,本地和一般雲端 GPU 都更容易遇到資源問題;8B-MoT 更適合做個人實測。

官方資料:

plain 體驗AI代碼助手 代碼解讀複製代碼GitHub: https://github.com/OpenSenseNova/SenseNova-U1
Hugging Face: https://huggingface.co/sensenova/SenseNova-U1-8B-MoT
SenseNova Skills: https://github.com/OpenSenseNova/SenseNova-Skills

網頁版體驗:先看模型能做什麼

在本地部署前,我先用了網頁版體驗。這個階段的目的不是研究環境,而是判斷模型能力是否值得繼續折騰本地部署。

第一個測試是資訊圖生成。我給的方向是「人生四個十年的 2x2 網格」,要求用物件、材質和年代數字表達不同人生階段。返回結果是一個四象限資訊圖:10 歲、20 歲、30 歲、40 歲分別用玩具、耳機、書本、工具、藥瓶、植物等物件表達階段感。

這張圖最讓我意外的是,它不是簡單把文字貼到畫面上,而是嘗試用「物化」的方式表達年齡。10 歲是積木和拼圖質感,20 歲有耳機和金屬數字,30 歲是書本和鐘錶,40 歲是工具、藥瓶和植物。它生成的效果還是很符合我們的 prompt 的。

第二個測試是 2D 卡通貼紙。我要求從同一男性角色出發,生成六張貼紙,並保留人物標誌性特徵,比如眼鏡、笑容、髮型,同時讓每張貼紙有不同表情和文字。

這張更偏社群媒體素材。它保留了統一角色,六張貼紙分別表達「教師模式開啟」「我需要咖啡……」「訂閱!」「自拍時間到!」「讓我來評分。」「太容易了」。從結果看,網頁版已經能支撐不少輕量內容創作場景,尤其適合先做創意驗證。

也正是因為網頁版效果還可以,我才繼續往本地部署走。

Mac 本地部署:可以搭環境,但不適合硬跑完整推理

我的主力機器是 MacBook Pro,配置是 Apple M1 Pro,8 核 CPU(6 個效能核心 + 2 個效率核心),16GB 記憶體,系統是 macOS 15.4.1,arm64 架構。第一反應當然是先在本機跑一遍。但雖然 SenseNova-U1 官方環境預設是 Linux + CUDA,還是想試一下。

官方專案的 pyproject.toml 要求 Python 版本是:

requires-python = ">=3.11,<3.12"

我一開始用 Python 3.12,直接被拒絕:

這一步說明了一個細節:不要看到本機 Python 新就直接用。SenseNova-U1 目前明確要求 Python 3.11,3.12 不行。

Mac 上正確的環境方向是:

plain 體驗AI代碼助手 代碼解讀複製代碼brew install [email protected]
/opt/homebrew/opt/[email protected]/bin/python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip wheel setuptools

然後安裝 macOS 版 PyTorch,而不是 CUDA 版 PyTorch:

pip install torch torchvision

專案依賴我沒有直接 uv sync,因為官方 uv 設定會拉取 CUDA 12.8 的 PyTorch wheel,Mac arm64 不能安裝這個套件。我的方式是手動安裝核心依賴:

plain 體驗AI代碼助手 代碼解讀複製代碼pip install transformers==4.57.1 tokenizers==0.22.1 accelerate==1.10.1 \
  huggingface-hub==0.36.2 safetensors==0.6.2 sentencepiece==0.2.1 \
  "numpy>=1.24,<3" pillow==12.0.0 tqdm==4.67.1 packaging==25.0 httpx

pip install -e . --no-deps

pip install -e . --no-deps 的作用是把當前專案註冊到 Python 環境裡,否則執行範例腳本會出現:

ModuleNotFoundError: No module named 'sensenova_u1'

到這裡,Mac 上的專案環境是能起來的。模型也能開始下載和載入。

但真正進入 MPS 推理時,問題來了。即使我只跑 512x5124 steps 的最小文生圖測試,模型載入到 MPS 時仍然觸發了記憶體不足:

錯誤裡最關鍵的是:

plain 體驗AI代碼助手 代碼解讀複製代碼RuntimeError: MPS backend out of memory
MPS allocated: 18.04 GiB
max allowed: 18.13 GiB
Tried to allocate 96.00 MiB

這說明它還沒真正開始生成圖,就已經把 MPS 可用記憶體頂滿了。

我又嘗試了官方低顯存模式:

plain 體驗AI代碼助手 代碼解讀複製代碼python examples/t2i/inference.py \
  --model_path sensenova/SenseNova-U1-8B-MoT \
  --prompt "一張極簡中文卡片,標題是 SenseNova-U1 Mac 本地部署測試,白底,科技感。" \
  --width 512 \
  --height 512 \
  --num_steps 4 \
  --cfg_scale 1.0 \
  --device mps \
  --dtype float16 \
  --attn_backend sdpa \
  --vram_mode low \
  --output outputs/mac_mps_low_test.png

結果不是 OOM,而是另一個更明確的問題:

核心報錯是:

plain 體驗AI代碼助手 代碼解讀複製代碼NotImplementedError: Inference requires a CUDA or XPU device (got device(type='mps')).
CPU / MPS lack the pinned-memory and stream primitives used here.

這個結論很清楚:Mac 可以完成環境適配和模型下載驗證,但目前不適合作為 SenseNova-U1-8B-MoT 的完整本地推理主力環境。--vram_mode low 這類 offload 機制依賴 CUDA/XPU 的 pinned memory 和 stream,MPS 不支援。

這一段我反而覺得值得寫進文章。因為很多時候「本地部署失敗」不是無意義失敗,它能幫助判斷什麼環境才是合理投入。

切到 CUDA 伺服器:部署路線變得順暢

Mac 這條路走不通後,我換到了雲端 GPU Notebook。最終我拿到的環境是 NVIDIA GPU,實際驗證裡 PyTorch 能識別到:

plain 體驗AI代碼助手 代碼解讀複製代碼torch: 2.8.0+cu128
cuda: 12.8
cuda available: True
gpu: NVIDIA GeForce RTX 3090

伺服器環境截圖如下:

CUDA 和 PyTorch 驗證是本地部署裡很重要的一步,建議不要跳過。我用的是:

plain 體驗AI代碼助手 代碼解讀複製代碼python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

輸出確認 CUDA 可用:

安裝好 PyTorch 後,我再安裝 SenseNova-U1 的核心依賴:

plain 體驗AI代碼助手 代碼解讀複製代碼pip install transformers==4.57.1 tokenizers==0.22.1 accelerate==1.10.1 \
  huggingface-hub==0.36.2 safetensors==0.6.2 sentencepiece==0.2.1 \
  "numpy>=1.24,<3" pillow==12.0.0 tqdm==4.67.1 packaging==25.0 httpx

pip install -e . --no-deps

這裡我還是沒有直接讓依賴工具自動處理 PyTorch。原因是前面已經驗證了 torch==2.8.0+cu128 和 GPU 可用,後續安裝專案依賴時不希望 pip 或 uv 把 torch 版本改掉。

接著克隆專案:

plain 體驗AI代碼助手 代碼解讀複製代碼cd /root/autodl-tmp
git clone https://github.com/OpenSenseNova/SenseNova-U1.git
cd SenseNova-U1

Hugging Face 下載問題:切鏡像源並保存到資料碟

伺服器預設訪問 Hugging Face 不穩定,一開始直接載入:

--model_path sensenova/SenseNova-U1-8B-MoT

會報:

plain 體驗AI代碼助手 代碼解讀複製代碼Network is unreachable
HTTPSConnectionPool(host='huggingface.co', port=443)

所以我改成先把模型下載到資料碟,再用本地路徑載入。這裡用國內鏡像:

plain 體驗AI代碼助手 代碼解讀複製代碼HF_ENDPOINT=https://hf-mirror.com huggingface-cli download sensenova/SenseNova-U1-8B-MoT \
  --local-dir /root/autodl-tmp/models/SenseNova-U1-8B-MoT \
  --resume-download \
  --max-workers 1

幾個參數解釋一下:

plain 體驗AI代碼助手 代碼解讀複製代碼HF_ENDPOINT=https://hf-mirror.com:切到 Hugging Face 鏡像源
--local-dir:把模型放到資料碟,避免占系統碟
--resume-download:支援斷點續傳
--max-workers 1:降低並發,提高弱網路下的穩定性

當然下面這種先 export 然後驗證也是可以的。

中途我確實遇到過 Broken pipe,重新執行同一條命令後會續傳。最終下載完成時顯示 214 個檔案全部獲取成功:

這很重要,因為它證明後續不是線上拉模型,而是從本地路徑載入。

第一次生成:用 1024x1024 驗證 CUDA 推理閉環

模型下載完成後,我沒有繼續走線上模型名,而是直接使用本地模型目錄作為 --model_path。第一次成功生成用的是 1024x102430 stepscfg_scale 4.0,這比單純的連通性測試更接近實際可用效果。

plain 體驗AI代碼助手 代碼解讀複製代碼cd /root/autodl-tmp/SenseNova-U1
mkdir -p outputs

python examples/t2i/inference.py \
  --model_path /root/autodl-tmp/models/SenseNova-U1-8B-MoT \
  --prompt "一張中文科技風資訊圖,標題為 SenseNova-U1 本地部署成功,畫面包含 GPU 環境、模型下載、推理測試三個步驟,白色背景,藍色科技感,清晰排版,中文文字清晰。" \
  --width 1024 \
  --height 1024 \
  --num_steps 30 \
  --cfg_scale 4.0 \
  --device cuda \
  --dtype bfloat16 \
  --attn_backend sdpa \
  --vram_mode balanced \
  --output outputs/sensenova_u1_cuda_quality_test.png

在這裡插入圖片描述

這張圖裡能看到三個關鍵資訊:命令列已經從本地模型路徑載入,checkpoint shards 正常載入完成,最終圖片保存到了 outputs/sensenova_u1_cuda_quality_test.png。生成結果本身也符合提示詞要求,包含「GPU 環境、模型下載、推理測試」三個步驟,說明 CUDA 伺服器上的文生圖鏈路已經跑通。

需要注意的是,腳本會提示 1024x1024 不在官方訓練分辨率 bucket 中。這個警告不影響本次生成成功,也提醒我後面可以繼續按官方 bucket 再跑一次更規範的 16:9 測試。

解析度也有坑:不要隨便填 1360x768

我隨後嘗試 16:9,但一開始用了 1360x768,結果腳本提示它不在官方訓練 bucket 裡,並在 patchify 階段報 shape 錯誤。

官方支援的 bucket 裡,16:9 對應的是:

2720x1536

所以後面我改成官方 bucket。這個細節很容易踩坑:SenseNova-U1 的圖像生成不是任意解析度都穩定,最好按官方支援的 bucket 來。

我最終使用的 16:9 測試命令是:

plain 體驗AI代碼助手 代碼解讀複製代碼python examples/t2i/inference.py \
  --model_path /root/autodl-tmp/models/SenseNova-U1-8B-MoT \
  --prompt "生成一張中文資訊圖,標題為 SenseNova-U1 本地部署流程。內容包含四個步驟:建立 Python 3.11 環境、安裝 PyTorch CUDA 12.8、下載 SenseNova-U1 模型、執行文生圖測試。白底藍色科技風,16:9 橫版,排版清晰,文字盡量清楚。" \
  --width 2720 \
  --height 1536 \
  --num_steps 30 \
  --cfg_scale 4.0 \
  --device cuda \
  --dtype bfloat16 \
  --attn_backend sdpa \
  --vram_mode balanced \
  --output outputs/sensenova_u1_deploy_flow_2720x1536.png

生成結果如下:

這一版使用官方 16:9 bucket,比前面的 1024x1024 測試更符合模型推薦解析度。它也進一步證明:在 CUDA 環境下,只要解析度和參數設定合理,SenseNova-U1 的文生圖流程可以完整跑通。

用 SenseNova-U1 生成文章封面

最後我又讓它生成了一張文章封面。提示詞裡我明確要求主題是「SenseNova-U1 本地部署實戰」,畫面包含 GPU 伺服器、MacBook、Python 3.11、CUDA 12.8、PyTorch 2.8、Hugging Face、MPS OOM、vGPU 等關鍵字。

命令如下:

plain 體驗AI代碼助手 代碼解讀複製代碼python examples/t2i/inference.py \
  --model_path /root/autodl-tmp/models/SenseNova-U1-8B-MoT \
  --prompt "生成一張中文技術部落格封面圖,主題是 SenseNova-U1 本地部署實戰。畫面主體是一台發光的 GPU 伺服器和一台 MacBook,通過藍色資料流連接,背景是深色科技空間,漂浮著 Python 3.11、CUDA 12.8、PyTorch 2.8、Hugging Face、MPS OOM、vGPU 這些關鍵字。標題文字:SenseNova-U1 本地部署實戰。副標題文字:從 Mac 嘗試到 CUDA GPU 跑通。整體風格高級、清晰、科技感強、資訊圖海報感、16:9 橫版、構圖有衝擊力、中文標題盡量清晰。" \
  --width 2720 \
  --height 1536 \
  --num_steps 40 \
  --cfg_scale 4.0 \
  --device cuda \
  --dtype bfloat16 \
  --attn_backend sdpa \
  --vram_mode balanced \
  --output outputs/sensenova_u1_article_cover.png

終端生成過程:

最終封面圖我放在文章開頭,也再貼一次:

這張封面圖的整體完成度比我預期更好:主題明確,GPU 伺服器、Mac、本地部署這些元素都能和文章內容對應起來,中文標題也足夠醒目。對我來說,它已經不只是「跑通模型」的證明,而是可以直接服務文章表達的結果圖。

這次部署我得到的幾個結論

第一,網頁版適合快速驗證創意。本地部署前,我先用網頁版生成了資訊圖和貼紙。如果這個階段效果不值得繼續投入,本地部署其實沒有必要。

第二,Mac 可以做環境驗證,但不適合目前 8B-MoT 完整生成推理。我的 Mac 上完成了 Python 3.11 環境、依賴安裝、模型下載和腳本啟動,但 MPS 在載入模型階段就接近 18GB 上限並 OOM。--vram_mode low 又依賴 CUDA/XPU,不支援 MPS。

第三,CUDA 伺服器是目前最穩路線。只要 PyTorch 版本、CUDA 版本、Python 版本對齊,部署體驗明顯順暢。我的環境裡 torch==2.8.0+cu128、CUDA 12.8、RTX 3090 能跑通本地推理。

第四,模型下載要提前規劃。SenseNova-U1-8B-MoT 檔案不少,直接線上載入容易受網路影響。我更推薦先用 huggingface-cli download 下載到資料碟,再用本地路徑載入。

第五,解析度要尊重官方 bucket。像 1360x768 這種看起來標準的 16:9,並不一定適合模型內部 patch 邏輯。官方 16:9 bucket 是 2720x1536,使用非 bucket 解析度可能會在 patchify 階段報錯。

最後總結

這次折騰下來,我最大的感受不是「終於生成了一張圖」,而是對 SenseNova-U1 的部署邊界有了更清楚的判斷。

我認為 SenseNova-U1 最有價值的點不是單張圖是否完美,而是它把理解、生成、編輯、交錯圖文這些任務放在統一模型路線裡。對於開發者來說,這意味著後續不一定要為每個多模態任務拼不同模型和不同服務,而是有機會圍繞一個統一模型做應用層封裝。

當然,從這次實測看,它也不是「無腦本地跑」的模型。Python 版本、CUDA 版本、模型下載、顯存、解析度 bucket,每一項都可能成為部署門檻。我的建議是:

plain 體驗AI代碼助手 代碼解讀複製代碼如果只是體驗能力,先用網頁版。
如果是 Mac 使用者,先把它當成環境適配和失敗分析樣本,不要期待輕鬆跑滿。
如果要真正復現本地推理,優先選擇 Linux + NVIDIA CUDA。

這條路線最終是跑通的,而且中間踩到的問題也比較有代表性。對我來說,這比單純貼一個「成功生成」的結果更有意義。


原文出處:https://juejin.cn/post/7642555314736136227


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝17   💬11   ❤️1
589
🥈
alicec
📝1   ❤️2
81
🥉
我愛JS
💬2  
7
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登