로컬 AI 시대의 여명
일전에 썼던 글에 대한 follow-up으로 글을 하나 더 써보고자 한다. 대강 내가 뭘 어떻게 쓰고 있고, 감상은 어떤지에 대한 요약이다.
장비
전에 글을 썼을 때에는 아마 아직 2060을 쓸 때였을 텐데, 지금은 4070 Ti를 쓰고 있다. 얼마 전에 맞춘 건 아니고 좀 됐다. 충분히 쓸 만함에도 욕심이 끝이 없어서 4090을 맞춰야 했나 싶은 마음이 자꾸 일렁인다. CPU는 인텔 제품으로 대충 급 맞춰서 샀고, 메모리는 64GB를 쓰고 있다. OS는 게이밍을 겸해서 쓰는 기기이기 때문에 Windows 11을 쓰고 있다. 본 셋업으로는 Mixtral이 너무 느려 쓰기 어려운 것과 조금 복잡한 워크플로가 시간이 다소 걸리는 점을 빼면 크게 문제가 없다.
다만 오픈 소스 운영체제인 점, 커맨드 라인 활용의 용이함, 그리고 아마 추론만이라도 성능이 낫다고 알고 있다는 점 등에서 가능하다면 리눅스를 쓰고 싶다. AMD나 인텔의 GPU는 게이밍은 물론이고 가지고 노는 것만 생각해도 인생 개피곤해질 거 개뻔해서 고려조차 하지 않았다.
추론: 그림
SDXL은 GOAT다. 모르겠으면 외워라. 또 Turbo는 신이다. SD2.1은 망했지만 SDXL은 생태계 측면에서 1.5 이상의 무언가가 될 여지가 충분히 있다. 어쩌면 이미 뛰어넘었는지도 모른다. 프롬프트 해석이나 이미지의 자연스러움 등지에서 베이스 모델의 역량이 크게 차이난다. 가끔 아쉬울 때 있지만 이미 다양하고 많은 수의 체크포인트와 로라가 나와 있다. Turbo는 그냥 졸라 개빠르다. 퀄리티를 희생하는 것도 아니다. 원래 되는 건지 모르겠는데 XL 로라 그대로 써지길래 그냥 그렇게 쓰는 중이다. SD3는 안 써봤고, Pony는 용례에 따라 잠재력이 어마어마한 것 같다.
UI로는 AUTOMATIC1111을 쓰다가 ComfyUI로 갈아탄 이후 배치로 업스케일 돌릴 때랑 단순한 i2i 인페인트 돌릴 때를 제외하면 한 번도 뒤를 돌아보지 않았다. 그렇다고 불만이 없는 건 전혀 아닌데, AUTOMATIC1111이 너무나도 조악하고 허접해서 Comfy를 쓸 수밖에 없다. 복잡한 워크플로 구성이 훨씬 더 유리하고 각종 설정 값 저장 및 재사용도 더 낫다. Comfy도 이래저래 짜증나는 점이 많아 그냥 파이썬 코드를 써야겠다 싶어서 내가 그리도 싫어하는 파이썬을 몇 줄이나마 결국 쓰고야 말았는데… 모델 올리고 내리는 자원 관련해서 처리가 필요한 건지 자꾸 OOM나고 난리길래 그냥 오픈 소스 UI를 쓰고는 있다. 쉬운 거 하나 없다 정말.
체크포인트와 로라는 CivitAI에서 받아다 쓰고 있다. 텍스트와 반대로 HF는 이미지 모델 관련해서는 여러 모로 쓰기 곤란한 상황이다.
훈련: 그림
kohya_ss를 쓰다가 OneTrainer를 쓰고 있다. 바꾸고 난 뒤로 바로 kohya_ss는 삭제해버렸다. 캡셔닝 기능이 조금 부족하긴 한데, 내가 100장 이상의 데이터셋으로 훈련을 돌릴 일은 잘 없는지라 에디터를 손으로 켜서 편집해도 크게 문제가 없다. 솔직히 말하면 한 거 안 한 거 두 개 놓고서 비교해보진 않았지만 masked training이 굉장히 흥미롭고 매력적인 기능이다. 이유는 모르겠으나 동일 설정으로 OOM도 덜 나고 성능도 더 나오는 것 같다. 샘플링이나 백업도 보다 다양하게 설정할 수 있고, 훈련 자체의 인자도 보다 다양한 느낌이다. 텐서보드도 OneTrainer 쪽이 내 기준엔 더 보기 낫다.
추론: 영상
Stable Video Diffusion을 딱 몇 장 돌려보기만 했다. 아직은 이미지도 답답할 때가 있는 마당에 성능이 한참 모자라고, 결과물도 아쉽다. OpenAI의 Sora가 발표되었고 성능도 믿기지 않게 놀라운 수준으로 나왔으나… 클로즈드 소스는 거른다.
추론: 글
LLaMA는 신이고 Mistral은 무적이다. LLM은 다양한 이유로 비검열 모델을 쓸 동기가 크고, 다양한 동기로 로컬 구동을 할 이유가 강하다. 오픈 소스 LLM이 미친듯이 발전하고 있다는 것은 정말 다행이다. 어쩌면 정말로 오픈 소스가 상용 모델들을 이기는 날이 올지도 모른다.
UI로는 open-webui(구 ollama-webui)를 쓰고 있는데, 편하게 문제 없이 잘 쓰고 있다. 모델 사양을 작성하고 관리 및 사용하는 느낌도 그냥저냥 괜찮다. 근래 OpenAI 제품을 일절 써본 적은 없지만, UI는 내가 써본 버전의 ChatGPT 인터페이스까지는 많이 따라왔다고 생각한다. 근래는 ChatGPT는 쳐다본 적도 없다.
모델은 일차적으로 Open LLM Leaderboard와 레딧의 /r/LocalLLaMa를 참고해 Hugging Face에서 찾아 쓰고 있다. OpenHermes-2.5-Mistral-7b를 쓰다가 얼마 전부터 WestLake-7B-v2를 쓰고 있는데 내 유즈 케이스로 쓰기에는 잘 바꾼 것 같다. 이미지 생성, 구체적으로는 Stable Diffusion 생태계와는 다르게 체크포인트가 굉장히 다양하고 양자화라는 옵션까지 더해지기 때문에 처음엔 헷갈릴 수 있다. 나는 대체로 Q4_K_M이나 Q5_K_M을 쓰고 있는데 차이는 잘 모른다. 아무튼 TheBloke 만세다. Llama 3가 나온 뒤로는 아직 모델을 더 알아보지 않았는데, 베이스 모델만 해도 상당한 것 같다.
Mixtral은 사양이 부족해 제대로 써보지 못했다. 돌아는 가는데 답답하게 느려서, 딱 구동까지만 해봤다. miqu도 70b나 돼서 못 돌리는데 파격적인 기술적 돌파구만 오매불망 기다리는 중이다.
코딩 관련해서는, Codium에서는 돌아가지 않아서, VSC에서 Continue를 통해 ollama를 호출하는 셋업으로 구성해보았다. Tab autocompletion이 잘 동작하지 않아 한번씩 고쳐보는 중인데 깃헙 코파일럿도 출시 초기에 잠깐 쓰고 그 뒤로 써본 적이 없어서 크게 불편하지 않다. 어차피 아직 프리뷰인 기능이라 정식 업데이트를 기다려야 할 것 같다.