Stable Diffusion 모델 CoreML로 바꾸기 (feat. 애플 공식 깃허브)

J·2023년 5월 18일
1

내가 까먹을까봐 씀

최근에 ios 앱에 Stable Diffusion 모델을 넣어야 할 일이 생겼는데, 그 어디에도 자세한 설명이 없었다... 그래서 미래의 나를 위해 정리해본다.

레퍼런스는 apple 공식 문서와 첨부하는 youtube 영상이다. 사실 영상 보면 친절하고 자세하게 설명해주고 별로 어렵지도 않기 때문에 할 만 하다.

ios앱에서 머신러닝 모델을 사용하려면 CoreML이라는 라이브러리를 써야한다. 이 CoreML로 쓸려면 모델이 .mlmode 형식이어야 하는데, Hugging Face에 올라와있는 대부분의 Stable Diffusion은 이 형식이 아니다. 그래서 바꿔줘야 한다.

아무것도 안깔린 노트북이라고 가정하고 시작한다.

개발 환경을 위한 설치

1. Git, Git lts 설치

Git clone 명령어를 써야 하니까 당연히 Git은 설치해야 한다. 이건 검색하면 나오니까 생략한다.

Git lts는 대용량 파일을 저장하기 위한 깃의 확장판? 같은 것인데 (저는 그렇게 이해했어요...) 모델 파일이 너무 커서 설치해야 한다.

https://git-lfs.com/

여기 링크에 들어가서 자기 os에 맞는 버전으로 다운받으면 된다.
다운 받았으면 zip을 풀고 터미널을 실행한다.

  1. 터미널에서 다운 받은 디렉터리로 이동한다.
$ cd ~/Downloads/git-lfs-1.X.X
  1. 아래 명령어를 실행해서 파일을 설치한다. 만약에 안되면 sudo가 들어간 명령어를 치면 된다.
$ ./install.sh  > 이 명령어가 안되면 아래 명령어를 치기! 
$ sudo ./install.sh
 > Git LFS initialized.
  1. 설치가 성공했는지 확인한다.
$ git lfs install
> Git LFS initialized.

여기까지 했으면 Git LFS가 설치된거다.

2. 파이썬 설치

최소 사양이 3.8 이다. 아래 파이썬 홈페이지에 가서 다운받고 설치한다.

https://www.python.org/downloads/

3. 아나콘다 설치

가상환경을 위해 설치해야 한다. 아래 링크로 가서 맥 버전으로 설치하고 클릭하면 알아서 패키지 파일 풀어준다.

https://www.anaconda.com/download

여기 까지가 컴퓨터에 사전 설치해야 하는 작업들이었다!

CoreML 모델로 convert

1. 가상 환경 만들고 dependency 설치하기

터미널을 열어서 애플 공식 깃허브에서 ml-stable-diffusion repo를 다운받는다.

링크 : https://github.com/apple/ml-stable-diffusion


git clone https://github.com/apple/ml-stable-diffusion

새로 터미널을 열어서 아나콘다에 가상환경을 만들어 준다. 파이썬 버전은 3.8로 한다.

conda create -n coreml_stable_diffusion python=3.8 -y

만들어준 가상환경을 활성화한다.

conda activate coreml_stable_diffusion

아까 다운받은 ml-stable-diffusion 폴더로 이동한다.

cd ml-stable-diffusion 다운받은 링크

필요한 것들을 추가 설치한다.

pip install -e .

여기까지 하고 잠시 터미널 창을 내려준다. (끄면 안된다.)

2. Hugging Face에 Access Token으로 로그인

일단 인터넷을 키고 Hugging Face에 가입해야 한다.

https://huggingface.co/

가입한 뒤 Setting > tokens 에 들어가서 User Access Token을 발행한다.

https://huggingface.co/settings/tokens

이렇게 가입하고 난 뒤에는 다시 터미널 창으로 돌아온다. (아까 그 창)

터미널 창에서 로그인 한다.

huggingface를 처음 쓰는 거라면 아래 pip 명령어부터 입력한다. 처음에 한번만 입력하면 된다.

pip install huggingface_hub

아래 코드를 따라 로그인을 한다.

huggingface-cli login

위의 코드를 입력하면 token을 치라고 나오는데 위에서 만든 token을 복붙하면 된다.

3. 원하는 모델 찾기

Stable Diffusion에 들어가서 원하는 모델을 찾는다. 중요한 건 pytorch 기반으로 구현된 모델만 convert 된다...🌝

4. coreml로 바꾸기

터미널 창에 다시 들어가서 아래 명령어를 따라 쳐준다. 한글로 표시한 부분은 각자 알아서 넣어야 한다.

python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker --model-version "모델이름" -o 나오는모델을 저장할 폴더

모델 이름은 Huggingface hug에서 긁어오고 저장할 폴더는 제일 만만한 detktop으로 했다.

참고로 이 과정이 매우 매우 오래 걸린다.

그리고 중간에 메모리가 없으면 에러가 나니까 꼭 디스크 용량을 넉넉하게 만들고 실행해야 한다.

profile
재이의 삽질일기, 근데 발전을 곁들인

0개의 댓글