koh1018 commited on
Commit
fc1a2fa
·
1 Parent(s): 345c726

Dockerfile 수정

Browse files
Files changed (2) hide show
  1. Dockerfile +23 -21
  2. app.py +8 -4
Dockerfile CHANGED
@@ -1,38 +1,40 @@
1
- # 1. 기반이 될 공식 파이썬 이미지를 지정.
2
  FROM python:3.9
3
 
4
- # 시스템 패키지 목록을 업데이트하고, C++ 컴파일에 필요한 기본 도구들을 설치.
5
- # 작업은 root 권한으로 수행해야 하므로, USER를 바꾸기 전에 실행.
6
- RUN apt-get update && apt-get install -y build-essential cmake
7
 
8
- # 2. 컨테이너 내부에 코드를 저장할 작업 폴더를 만듦. (소유자는 아직 root)
 
 
 
9
  WORKDIR /app
10
 
11
- # 3. 보안을 위해 권한이 제한된 새로운 사용자(user)를 생성.
12
  RUN useradd -m -u 1000 user
13
-
14
- # 4. root가 user에게 /app 폴더 전체의 소유권을 넘겨줌.
15
  RUN chown -R user:user /app
16
-
17
- # 5. 이제부터 모든 작업은 /app 폴더의 주인이 된 user가 수행.
18
  USER user
19
 
20
- # 6. 캐시 디렉토리를 user가 소유한 /app 폴더 내부로 지정.
21
- ENV HF_HOME /app/huggingface_cache
22
  ENV PATH="/home/user/.local/bin:${PATH}"
23
 
24
- # 7. requirements.txt 파일을 복사하고 라이브러리를 설치.
25
- # 이제 user가 /app 폴더의 주인이므로 --chown 플래그는 필요 없음.
26
- COPY ./requirements.txt requirements.txt
27
 
28
- # llama-cpp-python을 설치할 때, 불필요한 하드웨어 가속 옵션을 모두 끄고
29
- # 가장 기본적인 CPU 버전으로만 컴파일하도록 지시하여 리소스 초과를 막음.
 
 
30
  ARG CMAKE_ARGS="-DLLAMA_CUBLAS=OFF -DLLAMA_HIPBLAS=OFF -DLLAMA_OPENBLAS=OFF"
 
 
 
31
 
32
- RUN pip install --no-cache-dir --upgrade -r requirements.txt
 
33
 
34
- # 8. 나머지 모든 소스 코드를 작업 폴더에 복사.
35
- COPY . /app
36
 
37
- # 9. 모든 준비가 끝나면, 서버를 실행.
38
  CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
+ # 1. 파이썬 이미지를 지정.
2
  FROM python:3.9
3
 
4
+ # 2. C++ 컴파일러(gcc/g++) 버전 11과 필수 빌드 도구들을 설치.
5
+ RUN apt-get update && apt-get install -y build-essential gcc-11 g++-11 cmake
 
6
 
7
+ # 3. 파이썬의 패키지 설치 도구(pip) 자체를 최신 버전으로 업그레이드.
8
+ RUN python3 -m pip install --upgrade pip setuptools wheel
9
+
10
+ # 4. 컨테이너 내부에 코드를 저장할 작업 폴더를 만듦.
11
  WORKDIR /app
12
 
13
+ # 5. 보안을 위해 권한이 제한된 사용자(user)를 생성하고 소유권을 이전.
14
  RUN useradd -m -u 1000 user
 
 
15
  RUN chown -R user:user /app
 
 
16
  USER user
17
 
18
+ # 6. 환경 변수를 설정.
 
19
  ENV PATH="/home/user/.local/bin:${PATH}"
20
 
21
+ # 7. requirements.txt 파일을 복사.
22
+ COPY --chown=user ./requirements.txt requirements.txt
 
23
 
24
+ # 8. llama-cpp-python을 '똑똑하게' 설치하기 위한 모든 옵션을 설정.
25
+ # - CMAKE_ARGS: 불필요한 GPU 옵션을 모두 끔.
26
+ # - FORCE_CMAKE=1: CMake를 강제로 사용하도록 함.
27
+ # - CC/CXX: 방금 설치한 gcc-11/g++-11을 컴파일러로 명시적으로 지정.
28
  ARG CMAKE_ARGS="-DLLAMA_CUBLAS=OFF -DLLAMA_HIPBLAS=OFF -DLLAMA_OPENBLAS=OFF"
29
+ ENV FORCE_CMAKE=1
30
+ ENV CC=gcc-11
31
+ ENV CXX=g++-11
32
 
33
+ # 9. 라이브러리 설치.
34
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
35
 
36
+ # 10. 나머지 모든 소스 코드를 작업 폴더에 복사.
37
+ COPY --chown=user . /app
38
 
39
+ # 11. 모든 준비가 끝나면, 서버를 실행.
40
  CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py CHANGED
@@ -11,10 +11,14 @@ import json
11
  app = FastAPI()
12
 
13
  # 2. GGUF 모델 로딩 준비
14
- # TheBloke의 SOLAR 모델을 예시로 사용.
15
- # 'repo_id'는 모델이 있는 저장소, 'filename'은 그 안의 특정 GGUF 파일명.
16
- model_repo_id = "TheBloke/SOLAR-10.7B-Instruct-v1.0-GGUF"
17
- model_filename = "solar-10.7b-instruct-v1.0.Q4_K_S.gguf"
 
 
 
 
18
 
19
  # Hugging Face Hub에서 GGUF 파일을 다운로드하고, 로컬 경로를 가져온다.
20
  # 이 과정은 서버 시작 시 한번만 실행된다.
 
11
  app = FastAPI()
12
 
13
  # 2. GGUF 모델 로딩 준비
14
+ # # TheBloke의 SOLAR 모델을 예시로 사용.
15
+ # # 'repo_id'는 모델이 있는 저장소, 'filename'은 그 안의 특정 GGUF 파일명.
16
+ # model_repo_id = "TheBloke/SOLAR-10.7B-Instruct-v1.0-GGUF"
17
+ # model_filename = "solar-10.7b-instruct-v1.0.Q4_K_S.gguf"
18
+
19
+ # 7B 모델인 Qwen 2.5로 변경하여 테스트
20
+ model_repo_id = "Triangle104/Qwen2.5-7B-Instruct-Q4_K_S-GGUF"
21
+ model_filename = "qwen2.5-7b-instruct-q4_k_s.gguf"
22
 
23
  # Hugging Face Hub에서 GGUF 파일을 다운로드하고, 로컬 경로를 가져온다.
24
  # 이 과정은 서버 시작 시 한번만 실행된다.