🤔 마주한 문제점
일단, 유료 방법을 사용하지 않으면, LM Studio를 써야할 듯 하다.
현재 LM Studio의 GUI에서는

위에서 보면 알 수 있다시피 하나의 포트번호로만 하나의 모델을 구동할 수 있다.
그치만, 우리는 병원 놀이라면, 병원놀이 관련 모델을, 시장 놀이라면, 시장놀이 관련 모델을, 학교 놀이라면 학교놀이 관련 모델을 각각 다르게 제공해야하는데, 한개의 모델만 구동시킬 수 있다면 정말 문제이다.
그래서 이것에 대한 해결방안을 찾아보려고 한다.
🔶 CLI 방법은 없을까? 관련 공식 문서 살펴보기!
GUI방법으로 했을때는 제한이 있기 때문에, 혹시 LM Studio에서 CLI를 제공하는지 관련 공식 문서를 찾아보았다. 해당 문서 내용을 정리하면 다음과 같다.
(1) 개요
🔸 lms란?
lms는 LM Studio의 명령줄 인터페이스(CLI) 도구로, 버전 0.2.22와 함께 출시되었습니다.
(2) 설치
🔸 lms 부트스트랩
LM Studio를 한 번 실행한 후,
Mac/Linux에서는
~/.cache/lm-studio/bin/lms bootstrap
Windows에서는
cmd /c %USERPROFILE%/.cache/lm-studio/bin/lms.exe bootstrap
명령어를 실행합니다.
(3) CLI 명령어
🔸 기본 사용법
설치 후, 단순히 lms와 서브 커맨드를 사용합니다.
🔸 사용 가능한 서브 커맨드
| status |
LM Studio의 상태를 출력합니다 |
| server |
로컬 서버 관리 명령어 (`start`, `stop`) |
| ls |
다운로드된 모든 모델을 나열합니다 |
| ps |
로드된 모든 모델을 나열합니다 |
| load |
모델을 옵션과 함께 로드합니다 (`--gpu`, `--context-length`) |
| unload |
모델을 언로드하며, 모든 모델을 옵션으로 언로드할 수 있습니다 |
| create |
스캐폴딩을 통해 새 프로젝트를 생성합니다. |
| log |
LM Studio에서 로그를 스트리밍하여 디버깅합니다 |
| version |
CLI의 버전을 출력합니다 |
| bootstrap |
CLI를 초기화합니다 |
(4) 추가 기능
🔸 디버깅 및 자동화
lms log stream을 사용하여 모델에 전송되는 입력 문자열을 검사하고 디버깅에 유용합니다.
- 워크플로 자동화, 로컬 서버 시작/정지, 모델 로드/언로드 관리가 가능합니다.
(5) 개발 및 리소스
🔸 개발 및 라이선싱
- MIT 라이선스 하에 개발되었으며, GitHub에 호스팅되어 있습니다.
- Github에서 이슈 및 PR을 통해 커뮤니티 기여를 환영합니다.
🔸 lmstudio.js와의 통합
- lmstudio.js를 사용하여 LM Studio와 상호작용하며,
lms이상의 기능을 제공합니다.
(6) 추가 정보
🔸 문서 및 커뮤니티
- 더 많은 기능을 탐색하고 LM Studio Discord 서버에서 토론에 참여할 수 있습니다.
- Github 및 Twitter에서 업데이트와 프리릴리즈 버전을 팔로우할 수 있습니다.
(7) 링크
🔸 유용한 링크
🔶 시도 과정
음...한번 위의 명세서대로 시도해보기로 했다.
[STEP1] lms부트스트랩 및 실행
나는 윈도우 환경이라서 다음과 같이 터미널에 명령어를 입력했다.
cmd /c %USERPROFILE%/.cache/lm-studio/bin/lms.exe bootstrap

[STEP2] LM Studio의 모델 확인
현재 내가 GUI상 다운한 모델을 다음 2개이다.

1) sangthree/0707_gguf/0703modelFromHF.gguf
2) teddylee777/Llama-3-Open-Ko-8B-gguf/Llama-3-Open-Ko-8B-Q5_K_M.gguf
한번 CLI로 현재 모델 리스트를 확인해보려고 한다.
~/.cache/lm-studio/bin/lms ls

두개의 모델을 확인할 수 있다.
[STEP3] 모델 로드
lms CLI명령어로 각각의 모델을 로드합니다. 이 단계에서는 포트를 명시하지 않고 모델을 로드합니다.
~/.cache/lm-studio/bin/lms load sangthree/0707_gguf --identifier="model1"
~/.cache/lm-studio/bin/lms load teddylee777/Llama-3-Open-Ko-8B-gguf --identifier="model2"

[STEP4] 로드된 모델 확인
로드된 모델이 제대로 설정되었는지 확인합니다.
~/.cache/lm-studio/bin/lms ps

🔶 Docker Compose
음 그런데 이제 각각의 모델을 다른 포트로 실행하면 되는데 문제가 있다.
lms CLI에서 포트 설정을 지원할수도 있지만 ㅠㅠ 내가 찾아본 결과, 관련 자료를 찾을 수 없었다. 그래서 (있을수도 있지만) 없다고 판단했고, 각 모델의 API 서버를 독립적으로 실행해야할 수 있다고 판단했다.
이 경우 lms CLI가 포트 설정을 지원하지 않기 때문에 Docker나 별도의 서버 설정을 통해 모델을 독립적으로 실행하는 방법을 고려해야 합니다. 만약 lms CLI 자체가 이러한 기능을 지원하지 않는다면, 아래와 같이 Docker Compose를 사용하는 것이 좋습니다.
도커 다운로드
Docker Desktop을 설치합니다.


Dockerfile 작성
프로젝트 디렉토리에 Dockerfile을 생성합니다.
FROM ubuntu:20.04
# 설치해야 할 패키지 설치
RUN apt-get update && \
apt-get install -y python3 python3-pip
# LM Studio 설치
RUN mkdir -p /lm-studio
COPY . /lm-studio
WORKDIR /lm-studio
RUN pip3 install .
# 환경 변수 설정
ENV LMSTUDIO_PATH="/lm-studio/.cache/lm-studio/bin/lms"
# 서버 실행 명령어
CMD ["sh", "-c", "$LMSTUDIO_PATH server start && $LMSTUDIO_PATH load $MODEL_PATH && tail -f /dev/null"]
Docker Compose 파일 작성
docker-compose.yml 파일을 작성하여 각 모델을 다른 포트로 실행합니다.
version: '3'
services:
model1:
build: .
environment:
- MODEL_PATH=sangthree/0707_gguf/0703modelFromHF.gguf
ports:
- "5000:5000"
model2:
build: .
environment:
- MODEL_PATH=teddylee777/Llama-3-Open-Ko-8B-gguf/Llama-3-Open-Ko-8B-Q5_K_M.gguf
ports:
- "5001:5001"
Docker Compose 실행
이렇게 설정하면 두 개의 모델이 각각 5000번 포트와 5001번 포트에서 실행됩니다.
[에러] Docker Compose가 실행중에 발생한 문제

에러 메시지를 보면 pip3 install .명령어에서 발생한 문제인것으로 보입니다. 이는 Docker 이미지 빌드 과정에서 발생한 문제입니다.
해결을 위해 다음 단계를 고려해볼 수 있다.
(1) Dockerfile 수정
Dockerfile에서 문제가 발생한 부분을 수정해야 합니다. 에러 메시지에 따르면 pip3 install . 명령이 실패했는데, 이는 현재 디렉토리 (.)에 setup.py 또는 pyproject.toml 파일이 없어서 발생한 문제입니다. 일반적으로 Python 패키지를 설치할 때는 이 파일들이 필요합니다.
해결 방법: Dockerfile에서 pip3 install . 대신 필요한 패키지를 명시적으로 설치하는 방법을 고려해 보세요. 예를 들어, requirements.txt 파일을 사용하여 필요한 패키지를 설치할 수 있습니다.
🤔 마주한 문제점
일단, 유료 방법을 사용하지 않으면, LM Studio를 써야할 듯 하다.
현재 LM Studio의 GUI에서는

위에서 보면 알 수 있다시피 하나의 포트번호로만 하나의 모델을 구동할 수 있다.
그치만, 우리는
병원 놀이라면, 병원놀이 관련 모델을,시장 놀이라면, 시장놀이 관련 모델을,학교 놀이라면 학교놀이 관련 모델을 각각 다르게 제공해야하는데, 한개의 모델만 구동시킬 수 있다면 정말 문제이다.그래서 이것에 대한 해결방안을 찾아보려고 한다.
🔶 CLI 방법은 없을까? 관련 공식 문서 살펴보기!
GUI방법으로 했을때는 제한이 있기 때문에, 혹시 LM Studio에서 CLI를 제공하는지 관련 공식 문서를 찾아보았다. 해당 문서 내용을 정리하면 다음과 같다.
(1) 개요
🔸 lms란?
lms는 LM Studio의 명령줄 인터페이스(CLI) 도구로, 버전0.2.22와 함께 출시되었습니다.(2) 설치
🔸 lms 부트스트랩
LM Studio를 한 번 실행한 후,
Mac/Linux에서는
Windows에서는
명령어를 실행합니다.
(3) CLI 명령어
🔸 기본 사용법
설치 후, 단순히
lms와 서브 커맨드를 사용합니다.🔸 사용 가능한 서브 커맨드
(4) 추가 기능
🔸 디버깅 및 자동화
lms log stream을 사용하여 모델에 전송되는 입력 문자열을 검사하고 디버깅에 유용합니다.(5) 개발 및 리소스
🔸 개발 및 라이선싱
🔸 lmstudio.js와의 통합
lms이상의 기능을 제공합니다.(6) 추가 정보
🔸 문서 및 커뮤니티
(7) 링크
🔸 유용한 링크
🔶 시도 과정
음...한번 위의 명세서대로 시도해보기로 했다.
[STEP1]
lms부트스트랩 및 실행나는 윈도우 환경이라서 다음과 같이 터미널에 명령어를 입력했다.
[STEP2] LM Studio의 모델 확인
현재 내가 GUI상 다운한 모델을 다음 2개이다.

한번 CLI로 현재 모델 리스트를 확인해보려고 한다.
두개의 모델을 확인할 수 있다.
[STEP3] 모델 로드
lmsCLI명령어로 각각의 모델을 로드합니다. 이 단계에서는 포트를 명시하지 않고 모델을 로드합니다.[STEP4] 로드된 모델 확인
로드된 모델이 제대로 설정되었는지 확인합니다.
🔶 Docker Compose
음 그런데 이제 각각의 모델을 다른 포트로 실행하면 되는데 문제가 있다.
lmsCLI에서 포트 설정을 지원할수도 있지만 ㅠㅠ 내가 찾아본 결과, 관련 자료를 찾을 수 없었다. 그래서 (있을수도 있지만) 없다고 판단했고, 각 모델의 API 서버를 독립적으로 실행해야할 수 있다고 판단했다.이 경우
lmsCLI가 포트 설정을 지원하지 않기 때문에 Docker나 별도의 서버 설정을 통해 모델을 독립적으로 실행하는 방법을 고려해야 합니다. 만약lmsCLI 자체가 이러한 기능을 지원하지 않는다면, 아래와 같이 Docker Compose를 사용하는 것이 좋습니다.도커 다운로드
Docker Desktop을 설치합니다.


Dockerfile 작성
프로젝트 디렉토리에
Dockerfile을 생성합니다.Docker Compose 파일 작성
docker-compose.yml파일을 작성하여 각 모델을 다른 포트로 실행합니다.Docker Compose 실행
이렇게 설정하면 두 개의 모델이 각각 5000번 포트와 5001번 포트에서 실행됩니다.
[에러] Docker Compose가 실행중에 발생한 문제
에러 메시지를 보면
pip3 install .명령어에서 발생한 문제인것으로 보입니다. 이는 Docker 이미지 빌드 과정에서 발생한 문제입니다.해결을 위해 다음 단계를 고려해볼 수 있다.
(1) Dockerfile 수정
Dockerfile에서 문제가 발생한 부분을 수정해야 합니다. 에러 메시지에 따르면 pip3 install . 명령이 실패했는데, 이는 현재 디렉토리 (.)에 setup.py 또는 pyproject.toml 파일이 없어서 발생한 문제입니다. 일반적으로 Python 패키지를 설치할 때는 이 파일들이 필요합니다.
해결 방법: Dockerfile에서 pip3 install . 대신 필요한 패키지를 명시적으로 설치하는 방법을 고려해 보세요. 예를 들어, requirements.txt 파일을 사용하여 필요한 패키지를 설치할 수 있습니다.