Cài đặt Stable Diffusion trên Apple M1 – Tutorial

Cài đặt stable diffusion trên Apple M1

Stable diffusion là một model được open-source gần đây bởi một công ty tên là Stability AI, điểm đặc biệt của stable diffusion đó chính là khả năng tạo ra generative art rất chân thực ( nếu có prompt chuẩn có thể không phân biệt được với họa sĩ vẽ).

Có nhiều trang web để trải nghiệm Stable Diffusion, nhưng nếu bạn sử dụng các trang web này thì tốc độ tải rất chậm ( do còn phải tranh giành resource với lại các bạn khác cũng muốn trãi nghiệm ).

Điều thú vị là các bạn có thể không cần phải đợi resource đó mà có thể trực tiếp tải Stable diffusion về và trải nghiệm trên máy tính cá nhân. Một laptop Apple M1 có thể có đủ khả năng chạy được model của stable diffusion.

Bản gốc của stable diffusion chỉ có thể chạy được trên Apple M1, tuy nhiên một bản fork của nó có các setup có sẵn để có thể chạy được trên apple m1 gọi là Invoke-ai. Link tới bản fork (các bạn không cần để ý tới phần này nếu chỉ cần cái đặt có thể follow tut).

https://github.com/invoke-ai/InvokeAI

Yêu cầu tối thiểu (dùng trong tutorial)

Apple M1 – Ram 16GB ( Ram 8GB nghe mọi người bảo chạy cũng được nhưng chờ rất lâu do bị out memory ).

Người viết chưa test trên intel.

Biết copy lệnh vào command line trên terminal

Cài đặt Stable diffusion trên Apple M1

Tải file lưu model về trước

File weight lưu toàn bộ model có thể được tải về từ hugging face, các bạn follow theo các step sau

  1. Đăng ký tại https://huggingface.co, có tài khoản mới được tải
  2. Vào trang tải stable diffusion model Stable model
  3. Đồng ý các điều khoản và nhấn access
  4. Tải sd-v1-4.ckpt (4.27 GB) ( nhớ kĩ là để file ở đâu không thì lạc mất đấy ).

Sau khi đã tải file model các bạn tiến hành cài đặt các phần mềm cần thiết để có thể chạy được model

Cài đặt phần mềm

Các bạn mở terminal (hoặc iTerm) trên mac lên để có thể gõ các lệnh sau

Terminal

Homebrew – và các packages

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Lệnh này sẽ cài homebrew ( một phần mềm quản lí package của mac ) nếu cấc bạn cài lần đầy có khi sẽ được yêu cầu cài cả Xcode (cái này khá nặng nên hãy kiên nhẫn ).

chỉ khi đã cài đặt xong homebrew bạn tiếp tục chạy lệnh này

brew install cmake protobuf rust

Miniconda – và các dependencies

Chúng ta sẽ tiến tới cài đặt miniconda. Miniconda là một phiên bản rút gọn của Anaconda. Để biết thêm Anaconda là gì các bạn có thể tham khảo tại post này của mình.

Pandas và Anaconda

Vì mục tiêu bài post này là giúp các bạn cài đặt vừa đủ để có thể chạy được stable diffusion nên chúng ta chỉ cài miniconda thôi.

# install miniconda (M1 arm64 version):
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o Miniconda3-latest-MacOSX-arm64.sh
/bin/bash Miniconda3-latest-MacOSX-arm64.sh

Clone repo về – chuẩn bị project

Theo như mình nhớ thì khi cài miniconda cũng sẽ có cả git được cài theo ( nếu mình nhầm các bạn có thể tự search cách cài git ). Chạy lệnh sau để lấy repo invoke AI về.

# clone the repo
git clone https://github.com/lstein/stable-diffusion.git

Sau đó cd vào thư mục này bằng lệnh cd.

cd stable-diffusion

Tạo thư mục stable-diffusion-v1 sau khi đã vào thư mục stable-diffusion

mkdir -p models/ldm/stable-diffusion-v1/

Các bạn còn nhớ file weight 4GB đã tải khi nãy không? Hãy đổi tên nó thành model.ckpt rồi bỏ nó vào thư mục này bên trong cái thư mục vừa clone về. Trông như này.

stable-diffusion(hoặc bạn tự đặt)/models/ldm/stable-diffusion-v1/model.ckpt

Khởi tạo lại môi trường conda

Chạy lệnh sau để cài đặt tất cả các dependencies của conda và pip cho môi trường osx-arm64 (apple m1) lên trên miniconda.

# install packages
PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac.yaml

Sau khi cài đặt hoàn tất hãy kích hoạt môi trường ( môi trường có tên là ldm, nếu bạn mở file environment-mac.yaml lên sẽ thấy )

conda activate ldm

Sau khi đã bên trong môi trường ldm rồi, các bạn có thể chạy được các code từ gói SD của invoke-ai. Trước tiên đảm bảo rằng bạn đang trong thư mục gốc của thư mục tải về khi nãy rồi chạy.

# only need to do this once
python scripts/preload_models.py

Để thực hiện preload (nếu không lúc chạy nó cũng sẽ load lại thôi).

Chạy stable diffusion lần đầu – Ví dụ mẫu

Chạy bằng cách gõ lệnh sau khi đang trong môi trường ldm

python scripts/dream.py --full_precision 

Sau khi chờ package chạy 1 hồi bạn sẽ đến được giao diện CLI của invoke-ai

Giao diện CLI

Ở giao diện này khi các bạn nhập input vào 1 đoạn prompt ( gợi ý ) thì nó sẽ trả ra hình ảnh được dựng nên bằng text2img ( từ ngữ thành hình ảnh ) ở thư mục. Chúng ta hãy gõ chicken vào thử xem nó sẽ cho ra cái gì.

Bắt đầu chạy

Sau khi chờ một hồi lâu, kết quả từ prompt (gợi ý) chicken sẽ trả về, với đường dẫn tới thư mục như bên dưới.

Chicken trong thư mục outputs/img-samples/…

Mở thử file này xem chicken của chúng ta như thế nào. Đây là kết quả.

Chicken prompt

Chỉ bằng một câu prompt về chicken mà SD đã có thể vẽ ra một con gà rất giống thật, hãy thử các câu prompt chi tiết hơn để xem sao nhé!

Như vậy là các bạn đã cài đặt xong và có thể chạy được stable diffusion cơ bản bằng CLI rồi. Mình recommend các bạn đọc thêm documentation của CLI này ở link dưới đây để có thể biết cách tinh chỉnh ( các thông số khi nhập prompt như độ lớn, độ random, seed ,v…. v… ).

https://github.com/invoke-ai/InvokeAI/blob/main/docs/features/CLI.md

Kết

Cảm ơn các bạn đã đón đọc blog của mình, mình sẽ tiếp tục post các tutorial cách sử dụng SD ở các phần sau.

Support Tuan | Analytic

Trả lời