development (18) 썸네일형 리스트형 🐳 Stable Diffusion API Docker 패키징: 로컬 모델 조립 → 컨테이너화까지 Stable Diffusion 모델 구성요소를 로컬에서 조립한 다음, 이를 Docker 기반 API 서버로 패키징한 과정을 정리했다. 작업 배경앞선 포스팅에서 from_pretrained() 없이 로컬에 저장된 모델 구성 요소들만으로 Stable Diffusion 파이프라인을 조립했다. 그리고 이후에는 이 모델들을 EFS에 저장하고 API 서버에서 직접 로딩하는 구조로 개선했다. 이제 남은 건 이 환경을 실제 운영에 적합한 형태로 포장하는 일. 즉, Docker 컨테이너로 패키징해서 어디서든 실행 가능하게 만드는 것이었다.Dockerfile 구성패키징 대상은 다음과 같다:FastAPI 기반 API 서버 코드 (main.py)Stable Diffusion 구성 요소를 로드하는 로직requirements.t.. EFS에 모델 구성요소 저장하고, 컨테이너에서 불러오는 구조로 전환하기 컨테이너 재빌드 없이 모델을 안정적으로 불러오기 위해, EFS에 모델 구성요소를 저장하고 Docker에서 직접 마운트하는 구조로 전환했다. 왜 이 작업이 필요했을까?이전까지는 모델 구성 요소들을 로컬에 저장하고, 컨테이너 안에서 로드하는 구조였다. 이 방식도 잘 작동하긴 했지만, 다음과 같은 불편함이 있었다:컨테이너를 새로 빌드하거나 다른 인스턴스에서 실행할 경우 모델을 다시 복사해야 함모델 파일 용량이 수 GB 단위라 이미지 용량도 불필요하게 커짐장기적으로 여러 서버에서 공유하려면 중앙 저장소가 필요함그래서 Amazon EFS(Elastic File System)를 활용하기로 했다. EC2 인스턴스에 EFS 마운트먼저 EFS를 EC2 인스턴스에 /mnt/efs 경로로 마운트했다. 이후 Stable Di.. PyTorch 모델 저장 시 ModuleNotFoundError 오류 해결기: pickle과 버전 호환의 함정 모델을 저장하고 다시 불러오기만 했을 뿐인데 에러가 났다. 그 원인은 다름 아닌 pickle이었다.🧩 문제는 환경의 “미묘한 차이”였다Stable Diffusion 기반 API 서버를 개발하는 과정에서 .pth 파일로 저장한 모델을 불러오는 도중 다음과 같은 오류를 만났다.ModuleNotFoundError: No module named 'diffusers.models.unets' 흥미로운 점은 같은 서버에서 저장한 모델임에도, Docker 컨테이너에서 실행했을 때 이 오류가 발생했다는 것이다. 알고 보니 로컬 환경과 컨테이너 내부의 라이브러리 버전이 미묘하게 달랐고, 바로 그 차이로 인해 모델을 제대로 불러올 수 없었던 것이다.왜 이런 일이 발생했을까?# 저장 시[UNet2DConditionModel.. from_pretrained 없이 로컬 구성요소만으로 Stable Diffusion 파이프라인 조립하기 이전 글에서 Git LFS로 모델을 통째로 받으려다 실패한 경험을 바탕으로, 이번엔 필요한 구성요소만 뽑아서 로컬에서 파이프라인을 직접 조립해봤다. 왜 이 작업을 하게 됐을까?처음엔 Hugging Face의 from_pretrained() 방식으로 모델을 API 호출 시마다 실시간 다운로드하는 구조를 사용했다. 간단하게 구현할 수 있는 장점은 있었지만, 다음과 같은 문제들이 생겼다.네트워크 의존성: 컨테이너 내부나 오프라인 환경에선 사용 불가속도 문제: 모델을 매번 로딩하느라 초기 응답이 느림재현성 부족: 특정 시점의 모델을 안정적으로 고정해두기 어려움그래서 모델을 미리 다운로드하고, 로컬에 저장된 구성 요소들을 직접 불러와 파이프라인을 구성하는 방식으로 전환했다. User Request (FastAPI.. 🤯 [Error 분석]Stable Diffusion 모델을 Git에서 받다가 생긴 시행착오 로컬에서 Stable Diffusion 파이프라인을 구성하기 위해 모델 구성 요소를 직접 내려받다가, Git LFS와 디스크 용량 문제에 한 번 데였다.FastAPI 기반 이미지 생성 API를 완성한 이후, 다음 단계로는 모델 구성 요소들을 Hugging Face에서 직접 다운로드하지 않고, 로컬에서 불러오는 구조로 전환하고자 했다. 파이프라인 전체를 인터넷에서 매번 가져오는 방식은 개발/운영 측면에서 여러모로 비효율적이기도 했고, Docker 컨테이너 내에서 네트워크 의존성을 줄이고자 한 목적도 있었다. 그래서 Hugging Face에서 제공하는 Stable Diffusion v1.5 모델 저장소를 git clone으로 내려받았는데… 여기서 생각지 못한 문제가 발생했다.Git LFS와 "껍데기 파일" .. Stable Diffusion 이미지 생성 API 만들기 회사에서 도입한 GPU 머신에 구축한 환경 위에서, Stable Diffusion 모델을 FastAPI로 감싸 간단한 이미지 생성 API를 구현했다. 이미지 기반 AI 기능을 실서비스처럼 테스트하려면, 단순히 모델을 로딩하는 것만으론 부족하다. API 형태로 만들어야 실제로 쓸 수 있기 때문에, FastAPI를 활용해 Stable Diffusion 모델을 쉽게 테스트하고 실행할 수 있도록 구성했다. Hugging Face 연동모델을 허브에서 다운로드하기 위해선 CLI 인증이 필요하다.pip install huggingface_hubhuggingface-cli login 토큰 발급 후 로그인하면 끝. (토큰은 huggingface 사이트에 접속해서 쉽게 발급 가능하다)Stable Diffusion 파이프라.. Ubuntu에서 AI 개발 환경 세팅한 기록 4060 Ti GPU 머신에서 Stable Diffusion 기반 이미지 생성 API를 돌리기 위해, Ubuntu 환경에서 개발 환경을 세팅했다! 최근 회사에 4060 Ti GPU가 탑재된 워크스테이션이 들어오면서, 본격적으로 로컬 GPU 환경에서 AI 모델을 테스트할 수 있게 됐다. Stable Diffusion을 활용한 이미지 생성 API를 운영할 예정이라, 해당 머신 위에 개발 환경을 직접 구축하게 되었다.Ubuntu 22.04 기반에서 Anaconda 설치부터 NVIDIA 드라이버 세팅, PyTorch GPU 버전 설치까지 내가 진행한 세팅 과정을 아래에 공유한다. 추후 유사한 환경을 세팅할 일이 있다면 참고하면 좋을 것 같다. 1. Ubuntu 22.04 + Anaconda 설치리눅스 환경에서는.. 왜 머신러닝에서는 단순히 일관된 모델만으로는 부족할까? 머신러닝을 공부하다 보면, "consistent model"이라는 표현이 자주 등장합니다.하지만 실제로는 단순히 주어진 데이터에 잘 맞는, 즉 일관된 모델만으로는 부족합니다. 그 이유는 머신러닝이 다루는 문제 자체가 ill-posed problem, 즉 해가 유일하지 않은 문제이기 때문입니다.머신러닝의 목표는 '일반화'가치 있는 머신러닝 모델은 단순히 학습 데이터에 잘 맞는 것에 그치지 않고,보지 못한 데이터에 대해서도 잘 작동하는 모델이어야 합니다. 이를 generalization이라고 하며, 노이즈에 강하고 다양한 입력에 대해 일관된 출력을 내는 것이 핵심입니다.모델 선택 기준과 Inductive Bias모델을 선택할 때 우리는 단순히 정확도가 높은 모델을 고르는 것이 아니라,일반화 성능을 고려한 선.. 이전 1 2 3 다음