รัน Stable Diffusion เร็วขึ้น 10x ด้วย AMD GPU

ปกติแล้วตัว Stable Diffusion (ต่อไปขอเรียกสั้นๆ ว่า SD) สามารถติดตั้งและใช้งานได้เลยบน Nvidia GPU โดยไม่ต้องปรับแต่งอะไรทั้งสิ้น แต่พอเป็นเครื่อง AMD GPU ตัว SD จะรันไม่ได้ ต้องไปรันบน CPU แทน ซึ่งเป็นที่รู้กันดีว่าประสิทธิภาพสู้รันบน GPU ไม่ได้เลย

บล็อกนี้เลยจะมาแสดงวิธีการติดตั้งและรัน SD บนเครื่องที่ใช้การ์ดจอ AMD และวินโดวส์ 11 กัน รวมถึงใช้ Microsoft Olive ซึ่งเป็นโปรแกรม Python มาช่วยออพติไมซ์การรัน AI บนวินโดวส์ ซึ่งทางไมโครซอฟท์เคลมว่า ทำให้รัน AI โดยเฉพาะบน AMD GPU ได้เร็วกว่าเดิมถึง 10 เท่าเลยทีเดียว

ขั้นตอนการติดตั้งในภาพรวมมีแค่ 7 ขั้นตอนดังนี้

  1. ติดตั้ง Python 3.10.6 for windows
  2. ติดตั้ง git for windows
  3. ติดตั้ง Miniconda
  4. สร้าง VENV (Virtual Environment) สำหรับรัน Stable Diffusion
  5. ติดตั้ง Stable Diffusion
  6. แก้ไขไฟล์ requirements_versions.txt และ webui-user.bat
  7. รัน webui-user.bat เพื่อติดตั้งและเปิดใช้ Automatic1111 บน AMD GPU

สเปกเครื่องพีซีขั้นต่ำเพื่อใช้รัน Stable Diffusion

  1. การ์ดจอ AMD รุ่น RX6000 ขึ้นไป และมี VRAM ขั้นต่ำ 16GB
  2. Windows 11 รุ่น 64bit
  3. แรมในเครื่องอย่างน้อย 8GB

1. ติดตั้ง Python 3.10.6 for windows

ต้องเป็น Python เวอร์ชั่นนี้เท่านั้น ให้เราไปดาวน์โหลดที่ https://www.python.org/downloads/release/python-3106/ เลื่อนลงล่างสุด เลือกไฟล์ Windows installer 64bit

ระหว่างติดตั้งที่หน้าจอนี้ ให้ติ๊กถูกที่หัวข้อ add python to environment variable ด้วยนะครับ

2. ติดตั้ง git for windows

เราจะใช้ git ในการดึงโปรแกรมมาติดตั้งในเครื่องครับ ให้เราไปดาวน์โหลดที่ https://gitforwindows.org/ เอาเวอร์ชันล่าสุด จากนั้นก็ติดตั้งตามปกติ ใช้ค่า Default ทั้งหมดก็ได้ครับ ไม่ต้องปรับอะไร

3. ติดตั้ง miniconda for windows

ดาวน์โหลดได้ที่ https://www.anaconda.com/download (ต้องใส่อีเมลเพื่อรับข่าวสารก่อน) จากนั้นติดตั้งตามปกติ ระหว่างติดตั้งให้ติ๊กถูกที่ช่อง Add miniconda3 to my PATH…. และเอาติ๊กถูกหน้าช่อง Register Miniconda3 as my default… ออก ตามรูปด้วยครับ

4. สร้าง VENV

  1. เปิดคอมมานด์พร้อมของ miniconda จากเมนูของวินโดวส์ ดังภาพ (สังเกตจะมีคำว่า base อยู่หน้าสุด)

  2. เลือกไดรฟ์ที่มีพื้นที่เหลือเยอะๆ แล้วไปสร้างโฟลเดอร์ชื่ออะไรก็ได้ ตัวอย่างนี้ จะชื่อว่า sd โดยใช้คำสั่ง mkdir sd สร้างเสร็จแล้ว ใช้คำสั่ง cd sd เพื่อเข้าไปในโฟลเดอร์
  3. อยู่ในโฟลเดอร์ sd แล้ว ใช้คำสั่งนี้เพื่อสร้าง venv คือ conda create –name sd_olive python=3.10.6 รอซักครู่ ให้มันสร้างจนเสร็จ
  4. จากนั้นใช้คำสั่ง conda activate sd_olive เพื่อเข้าสู่ venv สังเกตว่าด้านหน้าพร้อมท์จะเปลี่ยนเป็น (sd_olive) แล้ว

5. ติดตั้ง Stable Diffusion

  1. ใช้คำสั่งนี้ เพื่อติดตั้ง SD
    git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml
  2. เสร็จแล้ว ใช้คำสั่ง cd เพื่อเข้าไปในโฟลเดอร์ stable-diffusion-webui-directml
    **tips : เราสามารถพิมพ์คำสั่งแค่ cd st* หรือ cd stable* ก็ได้ ในกรณีที่ไม่มีชื่อซ้ำในพาธนั้น**
  3. อัพเดต submodule เสียหน่อย โดยใช้คำสั่ง
    git submodule update --init --recursive

6. แก้ไขไฟล์ requirements_versions.txt และ webui-user.bat

  1. ยังอยู่ในโฟลเดอร์ stable-diffusion-webui-directml เปิดไฟล์ requirements_versions.txt ด้วย Notepad ขึ้นมา เลื่อนไปบรรทัดสุดท้ายเพิ่มคำว่า torch-directml แล้วเซฟปิดได้เลย
  2. เปิดไฟล์ webui-user.bat ด้วย Notepad เหมือนเดิม เพิ่ม –use-directml ที่บรรทัดตามภาพ เสร็จแล้วเซฟปิดได้เลย

7. รัน webui-user.bat เพื่อติดตั้งและเปิดใช้ Automatic1111 บน AMD GPU

พิมพ์คำสั่ง webui-user.bat ได้เลย ขั้นตอนนี้ในครั้งแรกจะนานหน่อย เพราะมันจะดึงโปรแกรมต่างๆ เข้ามาติดตั้งครั้งแรก รวมถึงไฟล์โมเดลเริ่มต้น v1-5-pruned-emaonly.safetensors ขนาด 4GB

ถ้าไม่มี error อะไร เสร็จแล้วระบบจะเปิดบราวเซอร์ขึ้นมาอัตโนมัติ ที่ localhost http://127.0.0.1:7860/ ตามภาพ เท่านั้นก็พร้อมรัน Automatic1111 กันแล้วครับ (ระหว่างที่ใช้งานห้ามปิดหน้าต่าง command prompt นะครับ)

วิธีดูว่ามันรันบน AMD GPU จริงหรือไม่

ก่อนเจนภาพ ให้เราเปิด Task Manager ขึ้นมาก่อน (พิมพ์ taskmgr ในช่องรัน) จากนั้นไปที่ performance เลือกไปที่ GPU 0 แล้วลองเจนภาพดู สังเกตว่าถ้าระหว่างเจนภาพกราฟ GPU ขึ้นสูง 60-90% ก็แสดงว่า AI ทำงานบน GPU นั่นเองครับ

ขอให้สนุกกับการเจนภาพ AI กันนะครับ

Latest articles

Related articles

Leave a reply

Please enter your comment!
Please enter your name here
Captcha verification failed!
CAPTCHA user score failed. Please contact us!