본문 바로가기

분류 전체보기

(29)
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모델을 선택할 때 우리는 단순히 정확도가 높은 모델을 고르는 것이 아니라,일반화 성능을 고려한 선..
입출력 방식 쉽게 이해하기! Programmed I/O vs Interrupt I/O 컴퓨터 시스템에서 입출력(I/O) 은 CPU와 장치 간의 데이터 교환을 의미합니다.이 입출력 작업을 어떻게 처리하느냐에 따라 시스템의 효율이 달라지는데, 대표적인 방식으로 Programmed I/O와 Interrupt I/O가 있습니다. 이번 글에서는 이 두 방식을 간단하게 정리하고, 장단점을 비교해보겠습니다. 1. Programmed I/O란?Programmed I/O는 CPU가 직접 입출력 장치에 명령을 보내고, 해당 작업이 끝날 때까지 CPU가 대기하는 방식입니다.별도의 복잡한 구조 없이 단순하게 구현할 수 있어, 작은 시스템이나 간단한 작업에 자주 사용됩니다.대기 시간: 작업이 완료될 때까지 CPU는 다른 일을 하지 못하고 기다림적용 분야: 단순 입출력 작업, 소규모 시스템2. Interrupt ..
[운영체제] 운영체제 수업 인트로 정리: 컴퓨터 구조와 OS의 만남 이번 포스팅부터는 본격적으로 운영체제 수업 내용을 정리해보려 합니다.사실 교수님께서 오늘까지 수업한 내용은 모두 인트로라고 하셨지만, 그 안에 꼭 알아야 할 기본 개념들이 꽤 많았습니다.운영체제뿐 아니라 컴퓨터 구조도 함께 언급되며, 앞으로의 본격적인 학습을 위한 기반이 되는 내용들이라 기억에 남기고 싶어 포스팅합니다.폰 노이만 구조 다시 상기하기폰 노이만 구조는 컴퓨터 구조나 마이크로프로세서 과목에서 꼭 한 번쯤 들어봤을 이름일 겁니다. 이 구조에서는 오직 프로세싱 유닛만이 메인 메모리에 접근할 수 있습니다.구성 요소는 다음과 같습니다.processing unit: 산술/논리 연산 장치(ALU), 프로세서 레지스터 포함control unit: 명령어 레지스터(IR), 프로그램 카운터(PC) 포함memo..
[운영체제] Three Main Features of Operating Systems 오늘은 'Operating Systems - Three Easy Pieces'라는 제목의 저희 교재에서가장 강조하는 OS의 세 가지 특성에 대해 orientation 삼아 간단히 소개드릴게요.교재는 이 세가지 특성을 기준으로 top down 방식으로 서술하고 있어요.앞으로 있을 포스팅 전에 미리 보시면 좋을 것 같아요 VirtualizationCPU VirtualizationOS의 세 가지 특성 중 가장 중요하다고 볼 수 있다. 간단히 사용자에게 illusion을 제공하는 특성이라고 볼 수 있다. 또 single cpu가 많은 process를 동시에 수행하는 듯한 illusion이라고 할 수도 있다. Memory Virtualization메모리 가상화라고 하면 조금은 익수할 수도 있다. 제한된 크기의 ..