여기는 수십 GB의 VRAM을 가진 그래픽카드들이 굴러다니고 괴수들이 돌아다니는 무시무시한 곳이지만 그래도 종종 초보적인 질문이 들어오는 것으로 보아 오늘은 초보자도 쉽게 따라할 수 있는 text-generation-webui 설치 및 간단 사용법을 알아보자.


준비물은 6GB 이상의 엔비디아 RTX 그래픽카드가 장착된 컴퓨터.


엔비디아 RTX 그래픽카드이지만 6GB 미만인 노트북 외장 그래픽카드, RTX가 아닌 GTX 이하의 엔비디아 그래픽카드, 엔비디아가 아닌 AMD나 인텔인 경우에는 이 가이드를 따를 수 없다.


방법이 없는건 아니지만 시스템 환경에 따라서 방법이 달라지다보니 초보자 가이드로 작성하기 어렵다.


설치 방법

1. https://github.com/oobabooga/text-generation-webui 로 접속한다.

2. 접속한 글에 있는 download 버튼을 클릭해서 다운로드 받는다.


3. 압축 파일을 열어서 경로에 한글이 들어가지 않는 적절한 경로에 압축을 푼다.


4. 압축이 풀린 곳에서 start_windows.bat을 클릭해서 실행한다.


5. 이런것이 뜬다면 추가 정보를 누르고


6. 실행을 누른다.


이런 콘솔창이 뜨면서 작동하기 시작하는데 조금 기다리면...


이런것이 나오면서 멈추는데, A를 입력하고 엔터를 누른다.


그런 다음 이런것이 나오면서 멈추는데, N를 입력하고 엔터를 누른다.


이 작업은 상당히 오래 걸리니 느긋하게 기다리자.


이렇게 뜨면 설치가 끝나고 작동중인 모습이다. 


프로그램 가동 및 webui 인터페이스 접속 방법


만약 창을 닫았거나 다음에 프로그램을 작동하고자 하는 경우에는 start_windows.bat을 클릭해서 실행한다.


이렇게 뜨면 작동중인 모습이다. 프로그램을 멈추게 하는 방법으로는 창을 닫거나 Ctrl+C를 하는 방법이 있다. 그러니까 창을 닫으면 프로그램이 멈춰버리니 주의.


프로그램이 작동되고 있는 자신의 컴퓨터에서 좋아하는 최신 브라우저에서 127.0.0.1:7860을 입력한다.


이렇게 뜨면 webui 인터페이스 접속에 성공했다. 


모델 다운로드 및 로더 설정 방법


webui 인터페이스에서 Model을 클릭한다.


모델 다운로드를 하기 위해서는 다운로드 탭에서 다운로드를 받을 수 있다.


모델을 다운받는 방법을 설명하기 전에, 모델 규격과 알맞는 로더를 소개한다. 


여기서는 오픈소스 AI 언어모델의 배신자 Mistral에서 제공하는 Mistral-7B-Instruct-v0.2를 ExLlamav2 로더로 로드하는 것으로 소개한다. 이 모델은 ChatGPT처럼 사용할 수 있는 지시 모델이며, 이 모델을 기준으로 소개하는 이유는 인지도가 높으면서 용량 대비 성능이 괜찮기 때문이다.


허깅페이스 모델 규격 → Transformers 로더 사용

허깅페이스 주소 : mistralai/Mistral-7B-Instruct-v0.2


허깅페이스 모델 규격은 Transformers 로더에서 일반적으로 사용되는 규격이다. 모델 소개에서 아무런 언급이 없거나 fp32/fp16/bf16이라고 언급되는 경우 절대 다수는 허깅페이스 모델 규격이다. 공식적으로 모델을 배포하는 경우 가장 일반적인 규격이지만 16비트 또는 32비트 모델로서 용량이 크고 VRAM 가성비가 좋지 않다는 것이 단점이다.


허깅페이스 모델 규격이 아닌 다른 규격은 누군가가 변환해서 허깅페이스에 올려두기를 바래야한다. 허깅페이스에서 검색을 하면 된다.


GPTQ 모델 규격 → ExLlamav2 로더 사용

허깅페이스 주소 : TheBloke/Mistral-7B-Instruct-v0.2-GPTQ


GPU용 구형 양자화 모델 규격중 하나이다. 보통 별일 없으면 4bit 양자화를 사용한다. 최근에는 exl2 규격에 밀려 구식 규격으로 취급받지만 대신 모델이 다양하게 있다.


EXL2 모델 규격 → ExLlamav2 로더 사용

허깅페이스 주소 : bartowski/Mistral-7B-Instruct-v0.2-exl2:4_0 (4비트 기준)


GPU용 신형 양자화 모델 규격중 하나이다. GPTQ보다 다양한 양자화 비트를 지원한다.

일부 EXL2 모델 저장소는 메인이 아닌 브랜치로 양자화 비트를 구분하기도 하는데, text-generation-webui에서는 허깅페이스 주소 끝에 :3_75 처럼 넣어주면 된다.


다운로드 방법은 이렇게 허깅페이스 주소와 옵션으로 브랜치를 입력하고 Download 버튼을 누르고 


Model successfully saved to ~ 가 뜰때까지 기다리면 된다.


다운로드 상황은 콘솔창에서 대충 확인할 수 있다.


다운로드가 끝나면 Load의 왼쪽에 있는 새로고침 🔁 버튼을 누르고 다운로드 받은 모델을 선택하면 이렇게 된다.


EXL2 모델을 선택하면 자동으로 ExLlama2_HF가 선택되는데, ExLlama2_HF에서 사용 문제가 발생하는 경우 ExLlama2로 변경하면 좋다.


여러가지를 보여주지만 여기서 중요한것은 두가지이다. 


중요한 이유는 VRAM 사용량과 직결되어서 그렇다.


1. max_seq_len - 모델의 텍스트 입력을 어느정도로 받을 수 있도록 세팅할 것인가? 를 설정하는 것이다. 이 값이 클수록 더 많은 VRAM을 소비하며, 모델이 해당 max_seq_len에서도 사용할 수 있도록 훈련받지 않았다면 무용지물이 된다. 


여기서는 초보자를 위한 가이드이니 2048을 입력한다.


2. cache_8bit

만약 VRAM 부족으로 로드에 실패하는 경우 이것을 사용하면 VRAM 사용량을 조금 더 줄일 수 있다.


준비가 끝나면 Load 버튼을 누르자.


이렇게 뜨면 로드에 성공한것이다. 


만약 그렇지 않다면 높은 확률로 CUDA OOM일 가능성이 높다. max_seq_len를 낮추거나 cache_8bit를 사용하거나 그래도 안되면 bartowski/Mistral-7B-Instruct-v0.2-exl2:3_5 처럼 4비트 미만의 양자화 모델을 다운받아 사용해보자.


작업관리자(Ctrl+Shift+Esc)에서 공유 메모리가 거의 사용되지 않으면서 전용 메모리에 잘 로드된것을 확인할 수 있다.


Chat 탭으로 돌아간 다음


instruct로 전환하자.


사용 방법


영어로 ChatGPT 쓰듯이 적당히 입력하고 Generate를 누르면 된다.


그러면 AI가 대답을 해준다.


새로운 채팅을 해보고 싶다면 New chat를 누르면 된다.


채팅을 수정하거나 재생성 하고 싶다면 막대기 3개를 누르면 뜨는 메뉴에서 적절히 고르면 된다.


https://github.com/oobabooga/text-generation-webui/wiki

이 이상은 text-generation-webui의 wiki를 참고하자.



한국어 모델을 사용해보고 싶다면 IHaBiS/Synatra-7B-v0.3-dpo-exl2:b4h8를 다운받으면 된다. 세팅법과 로딩법이 같다.