文生圖Optimum-Intel + Diffusers

傳統的Stable Diffusion WebUI只能用Nvidia GPU,AMD GPU,如果要使用Intel的GPU文生圖,只能另找方法,google好幾天不斷試錯還是做不出來(網路上一堆用linux的作法應該是不能用了),突然想到開vscode問AI,結果一天就做好,感嘆AI時代真的不一樣了

一. 先安裝python3.10, git

二. 建立虛擬隔離環境 (為了圖片放大功能搞壞環境,AI還是會出錯啊,好在AI有求必應,迅速給出步驟)

 1. 删除旧环境
cd C:\AI\sd-openvino
Remove-Item -Recurse -Force .\venv

 2. 创建新环境
python -m venv venv
.\venv\Scripts\Activate.ps1

 3. 升级 pip
python -m pip install --upgrade pip

 4. 安装核心依赖
pip install optimum[openvino,nncf]
pip install diffusers transformers accelerate
pip install gradio
pip install pillow
pip install peft

 5. 验证安装
python -c "from optimum.intel import OVStableDiffusionPipeline; print('OK')"
python -c "from openvino.runtime import Core; print('Devices:', Core().available_devices)"

 6. 运行 webui
python webui.py

三. 模型需從Hugging Face下載並轉換成OpenVINO格式, 花很多時間試各種模型, 跟stable diffusion的模型比, 名稱一樣但文生圖成果不太一樣, 只能慢慢試

from optimum.intel import OVStableDiffusionPipeline
from pathlib import Path
import argparse

def download_and_convert(model_id, output_dir, device="GPU"):
    """下載並轉換模型為 OpenVINO 格式"""
    print(f"📥 下載模型: {model_id}")
    print(f"💾 輸出目錄: {output_dir}")
    
    # 載入並轉換
    pipe = OVStableDiffusionPipeline.from_pretrained(
        model_id,
        export=True,
        device=device,
        compile=False  # 首次不編譯,讓首次使用時編譯
    )
    
    # 保存
    output_path = Path(output_dir)
    pipe.save_pretrained(output_path)
    print(f"✅ 模型已保存到: {output_path}")
    
    return output_path

def list_models(models_dir="./models"):
    """列出已下載的模型"""
    models_path = Path(models_dir)
    if not models_path.exists():
        print("❌ 模型目錄不存在")
        return
    
    print("\n📦 已安裝的模型:")
    print("-" * 60)
    
    for model_dir in models_path.iterdir():
        if model_dir.is_dir() and (model_dir / "model_index.json").exists():
            size = sum(f.stat().st_size for f in model_dir.rglob('*') if f.is_file())
            size_gb = size / (1024**3)
            print(f"  ✓ {model_dir.name} ({size_gb:.2f} GB)")
    
    print("-" * 60)

def main():
    parser = argparse.ArgumentParser(description="Stable Diffusion 模型管理工具")
    parser.add_argument("--download", type=str, help="下載模型(Hugging Face ID)")
    parser.add_argument("--output", type=str, default="./models", help="輸出目錄")
    parser.add_argument("--name", type=str, help="模型名稱")
    parser.add_argument("--list", action="store_true", help="列出已安裝的模型")
    parser.add_argument("--device", type=str, default="GPU", help="設備(GPU/CPU/NPU)")
    
    args = parser.parse_args()
    
    if args.list:
        list_models(args.output)
    elif args.download:
        model_name = args.name or args.download.split("/")[-1]
        output_dir = Path(args.output) / f"{model_name}-openvino"
        download_and_convert(args.download, output_dir, args.device)
    else:
        parser.print_help()

if __name__ == "__main__":
    main()

四. VAE很重要,不然人臉不能看,好在AI很快給出作法,做在webui.py裡,讚

五. Lora在openvino裡不是很好用,先暫時跳過

powershell
cd C:\AI\sd-openvino
.\venv\Scripts\Activate.ps1
python webui.py

用Intel GPU文生圖,速度快,再也不用拿CPU慢慢跑了,讚啦

唯一的問題是prompt有字數限制72Tokens, prompt只能講重點, 若是有好一點的GPU的話跑SDXL模型,字數可以再多一點


已發佈

分類:

作者:

標籤: