File size: 2,423 Bytes
a7bbba3
b19b1ca
48f468d
a7bbba3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48f468d
b19b1ca
48f468d
 
a7bbba3
 
48f468d
a7bbba3
 
 
 
91896dd
a7bbba3
 
b19b1ca
 
df49cb6
91896dd
 
b19b1ca
91896dd
b19b1ca
 
 
91896dd
 
08f4696
b19b1ca
a7bbba3
 
 
041f67a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Python 3.9 Slim ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
FROM python:3.9-slim

# ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ ์„ค์น˜
# apt-get update: ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
# git: GitHub ์ €์žฅ์†Œ ํด๋ก ์— ํ•„์š”
# build-essential: C/C++ ์ปดํŒŒ์ผ๋Ÿฌ (gcc, g++ ๋“ฑ) ๋ฐ ๊ธฐํƒ€ ๋นŒ๋“œ ๋„๊ตฌ ํฌํ•จ
# curl: Rust ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ์šฉ
# libffi-dev, libssl-dev: ์ผ๋ถ€ Python ํŒจํ‚ค์ง€(์˜ˆ: cryptography) ๋นŒ๋“œ ์‹œ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    build-essential \
    curl \
    libffi-dev \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/* # apt ์บ์‹œ ์ •๋ฆฌํ•˜์—ฌ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ค„์ด๊ธฐ

# Rust ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜ (tokenizers ๋นŒ๋“œ์šฉ)
# rustup์€ Rust ๋„๊ตฌ ์ฒด์ธ ๊ด€๋ฆฌ์˜ ๊ณต์‹์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
# -y: ๋ชจ๋“  ํ”„๋กฌํ”„ํŠธ์— 'yes'๋กœ ์ž๋™ ์‘๋‹ต
# --default-toolchain stable: ์•ˆ์ •์ ์ธ ์ตœ์‹  ํˆด์ฒด์ธ ์„ค์น˜
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable

# Rust์˜ ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€
# rustup์€ ๊ธฐ๋ณธ์ ์œผ๋กœ /root/.cargo/bin์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
ENV PATH="/root/.cargo/bin:${PATH}"

# ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /app

# ์ „์ฒด ์ฝ”๋“œ ๋ณต์‚ฌ (requirements.txt, main.py, .pkl ํŒŒ์ผ ๋“ฑ)
COPY . .

# Python ํŒจํ‚ค์ง€ ์„ค์น˜
# pip ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์‹  pip์ด wheel ํŒŒ์ผ์„ ์ž˜ ์ฐพ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
RUN pip install --no-cache-dir --upgrade pip

# ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์น˜ํ•˜์—ฌ ์˜์กด์„ฑ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# --no-cache-dir: ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
RUN pip install --no-cache-dir \
    fastapi \
    uvicorn \
    torch==1.13.1 \
    transformers==4.30.2 \
    tokenizers==0.13.3 \
    sentencepiece \
    numpy==1.23.5 \
    protobuf==3.20.3 \
    psutil \
    gluonnlp==0.10.0 \
    mxnet-mkl==1.6.0 \
    huggingface_hub \
    git+https://github.com/SKTBrain/KOBERT#egg=kobert_tokenizer\&subdirectory=kobert_hf # ์ด ๋ถ€๋ถ„์„ kobert_hf๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

# FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
# --host 0.0.0.0: ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ ‘๊ทผ ํ—ˆ์šฉ
# --port 7860: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜์‹ ํ•  ํฌํŠธ (Render๋Š” $PORT ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, Dockerfile์—์„œ๋Š” ๊ณ ์ • ํฌํŠธ ์„ค์ •)
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]