올라마 서버에서 모델을 실행(`pull`/`run`)할 때, 보통 온라인의 올라마 레지스트리나 허깅페이스에서 모델을 내려받습니다. 하지만 사설망과 같은 특별한 환경에서 다음과 같은 고민이 생길 수 있습니다: '1. 인터넷을 쓸 수 없는 곳에서 올라마를 써야합니다'. '2. 정책상 온프레미스에 모델을 보관해두고 사용해야 합니다.' 어떻게 해결할 수 있을까요? 올라마는 API 서버로 GGUF 형식을 지원하는 컨테이너 이미지를 모델로 사용합니다. 그럼 사설 레지스트리에 모델(이미지)을 저장해두고 쓸 수 있을까요? 네, 됩니다. 이 블로그는 사설망에서 올라마를 사용하는 사례를 소개합니다.
✨ 소개: 그래서 이런 걸 왜 하나요?
고객의 프로덕션 환경이 오프라인, 폐쇄망, 사설망 등의 특별한 네트워크인 경우가 있습니다. 보안 정책 때문에 그런 경우나, 정말 인터넷이 없는데 LLM을 사용하고 싶은 경우가 있습니다. 이런 경우에는
- LLM을 위한 레지스트리를 만들고 온라인에서 모델을 받아 옮깁니다. 혹은 직접 모델을 만들어서 레지스트리에 푸시합니다.
- 올라마를 설치하고 사설망의 레지스트리에서 모델을 받습니다.
- 사설망 내부에서 LLM을 서비스합니다.
의 방식으로 사설망에서 LLM을 서비스 할 수 있습니다. 이어지는 섹션에서 사설망(외부와 단절된 네트워크: 공유기, 인트라넷, VPC 내부)에서 올라마를 이용해 LLM을 서비스하는 사례를 소개합니다.
🔧 로컬 레지스트리 만들기
로컬 레지스트리를 확보합니다. 이미 같은 네트워크에 컨테이너 레지스트리(Hobor, Nexus, AWS ECR 등)가 있다면 그대로 사용하시면 됩니다. 이 블로그에서는 도커 허브의 레지스트리를 사용하겠습니다.
docker run -d -p 5050:5000 --name registry registry:2
# 포트는 임의로 5050으로 하였습니다.
다음 명령어로 이미지 목록을 확인합니다.
curl -X GET localhost:5050/v2/_catalog
새로 만든 레지스트리면 비어있습니다. 기존 레지스트리이면 인증정보를 함께 넣어 목록을 볼 수 있습니다.
👷 올라마에서 로컬 레지스트리 모델 푸시하기
이제 로컬 올라마에서 gemma2 모델을 내려받습니다. 올라마의 설치/사용법은 제가 작성한 이 글을 참고해주세요.
ollama pull gemma2
# 위 명령어에 'registry.ollama.ai/library/2'가 생략되어 있습니다.
# ollama pull registry.ollama.ai/library/gemma2
ollama list gemma2
그리고 로컬 레지스트리 주소로 변경하여 푸시합니다.
ollama cp gemma2 localhost:5050/google/gemma2:latest
ollama push localhost:5050/google/gemma2:latest --insecure
이제 다시 레지스트리에서 목록을 확인해 볼 수 있습니다.
curl -X GET localhost:5050/v2/_catalog
이제 레지스트리에는 모델이 잘 등록되어 있습니다. 다음 명령어로 올라마에 있는 이미지를 지워보겠습니다.
ollama rm localhost:5050/google/gemma2:latest
🦙 올라마에서 로컬 레지스트리 모델 불러오기
이제 로컬 올라마에 `localhost`로 시작하는 이미지는 없습니다. 목록을 확인해보겠습니다.
ollama list localhost
그리고 다음 명령어로 레지스트리에 있는 이미지를 받고 실행해봅니다.
run 명령은 pull & run 의 의미이므로 미리 pull 할 필요는 없습니다.
# ollama pull localhost:5050/google/gemma2:latest --insecure
ollama run localhost:5050/google/gemma2:latest --insecure
그리고 `안녕하세요? 당신은 어떤 모델인가요? 이름을 알려주세요.` 라는 질문을 해보았습니다.
여기까지 성공하셨다면, 저 레지스트리를 인트라넷에 연결하거나, 사설망 내부에서 사용하여 초기 목표를 이룰 수 있습니다. 사용한 명령어들 중 `--insecure` 처리가 된 것은 HTTP로 localhost에 연결해서 입니다. 여러분의 환경에서는 HTTPS SSL/TLS 연결을 권장드립니다.
여러분에게 도움이 되길 바라면서 이만 마치겠습니다. 읽어주셔서 감사합니다.
🧑💻 참조
'LLMOps' 카테고리의 다른 글
🦙 올라마(Ollama)#3: 내 컴퓨터에서 도커로 올라마 사용하기 (4) | 2024.11.17 |
---|---|
🦙 올라마(Ollama)#2: 내 컴퓨터에서 코드로 올라마 사용하기 (12) | 2024.11.16 |
🦙 올라마(Ollama): 나만의 GPT를 서비스 할 수 있는 도구를 소개합니다 (3) | 2024.11.15 |
어제보다 오늘 더 공부 잘하는 코딩냥이. 어제보다 오늘 더 일 잘하는 코딩냥이.
포스팅이 좋았다면, 오류를 발견했다면, 더 좋은 아이디어가 있다면 댓글 부탁드립니다!