LLM 엔지니어링환경설정← 이전목차다음 →MetaContents

시작 전에

환경설정

이 과정은 Windows PC 의 VS Code 에서 실습합니다. 과정 내내 같은 가상환경을 쓰고, 장마다 필요한 패키지를 그때그때 더해 설치합니다. GPU 는 없어도 됩니다.

설치하기

파이썬과 VS Code 는 이미 있다고 보고, 버전만 확인합니다. Python 3.12 이상이면 됩니다.

PowerShell
python --version
출력
Python 3.14.6
  1. 과정 폴더(예: C:\llm-course)를 만들고 VS Code 로 엽니다.
  2. VS Code 의 터미널(Ctrl+`)에서 가상환경을 만듭니다. 가상환경은 이 과정의 패키지만 따로 담아 두는 상자입니다. 다른 과제의 패키지와 버전이 섞이지 않습니다.
  3. 가상환경을 켭니다. 줄 앞에 (.venv) 가 붙으면 켜진 것입니다.
PowerShell
python -m venv .venv
PowerShell
.venv\Scripts\Activate.ps1
  1. VS Code 오른쪽 아래의 파이썬 버전을 눌러 .venv 의 파이썬을 고릅니다. 그래야 실행 단추가 같은 가상환경을 씁니다.

패키지 설치하기

1장에서는 표를 다루고, 그래프를 그리고, 머신러닝 모델을 만드는 패키지 넷을 씁니다.

PowerShell
pip install numpy pandas matplotlib scikit-learn

2장부터는 신경망 라이브러리 PyTorch 를 씁니다. NVIDIA GPU 가 있는 PC 는 GPU 판을, 없는 PC 는 CPU 판을 설치합니다. GPU 판은 내려받는 파일이 2.6GB 쯤이라 시간이 걸립니다.

PowerShell
pip install torch --index-url https://download.pytorch.org/whl/cu126
PowerShell
pip install torch

위가 GPU 판(CUDA 12.6), 아래가 CPU 판입니다. 그냥 pip install torch 를 하면 Windows 에서는 CPU 판이 설치되어, GPU 가 있어도 쓰지 못합니다. PyTorch 는 Windows 의 Visual C++ 런타임을 함께 씁니다. 설치한 뒤 import torch 에서 오류가 나면 아래 "자주 나는 오류" 표를 봅니다.

3장부터는 남이 학습해 공개한 모델을 Hugging Face 에서 받아 씁니다. 모델을 불러오는 transformers 와, 번역 모델의 토크나이저가 쓰는 sentencepiece 를 설치합니다.

PowerShell
pip install transformers sentencepiece

모델 파일은 처음 불러올 때 인터넷으로 내려받아 C:\Users\사용자이름\.cache\huggingface 에 저장되고, 다음부터는 바로 불러옵니다. 3장에서 받는 모델은 번역 모델 300MB 쯤, 챗봇 모델 1GB 쯤입니다. 내려받을 때 "unauthenticated requests" 라는 안내가 나와도 그대로 진행됩니다(로그인 없이 받을 때 나오는 안내입니다).

4장에서는 데이터를 다루는 datasets 와, Trainer 가 GPU 를 쓸 때 필요한 accelerate 를 더 설치합니다. 4장에서 새로 받는 모델(Qwen/Qwen2.5-0.5B)도 1GB 쯤입니다.

PowerShell
pip install datasets accelerate

5장에서는 LoRA 를 붙이는 peft 와 DPO 를 하는 trl 을 더 설치합니다. 5장의 학습은 GPU 가 있어야 알맞은 시간 안에 끝납니다(GTX 1650 에서 실습 하나에 4~7분).

PowerShell
pip install peft trl

6장에서는 API 서버에 요청을 보내는 openai 라이브러리를 더 설치합니다. 외부 API 와 Ollama 를 같은 코드로 부를 때 씁니다. python-dotenv 는 API 키를 .env 파일에서 읽을 때 씁니다(6장 「외부 API 로 만드는 RAG」).

PowerShell
pip install openai python-dotenv

Ollama 설치(6장부터)

Ollama 는 파이썬 패키지가 아니라 따로 설치하는 프로그램입니다. ollama.com 에서 Windows 설치 파일을 내려받아 설치하거나, PowerShell 에서 winget 으로 설치합니다.

PowerShell
winget install --id Ollama.Ollama

설치하면 Ollama 서버가 백그라운드에서 켜집니다. 새 PowerShell 창을 열고 6장에서 쓰는 모델 셋을 내려받습니다. 합쳐서 3.3GB 쯤입니다. 4GB 보다 작은 GPU 나 GPU 가 없는 PC 는 qwen2.5:0.5b 와 qwen2.5:1.5b 만 받아도 실습 5까지 됩니다.

PowerShell
ollama --version
ollama pull qwen2.5:0.5b
ollama pull qwen2.5:1.5b
ollama pull qwen2.5:3b
ollama list
출력
ollama version is 0.40.1
NAME                       ID              SIZE
qwen2.5:3b                 357c53fb659c    1.9 GB
qwen2.5:1.5b               65ec06548149    986 MB
qwen2.5:0.5b               a8b0c5157701    397 MB

위 출력은 교안을 만든 PC 의 것이고, 내려받은 시각 열과 6장에서 쓰지 않는 모델은 뺐습니다. 모델 파일은 C:\Users\사용자이름\.ollama\models 에 저장됩니다. 서버가 떠 있는지는 브라우저에서 http://localhost:11434 를 열어 "Ollama is running" 이 나오는지로도 봅니다.

7장에서는 임베딩 모델을 쓰는 sentence-transformers 와 벡터DB faiss-cpu, chromadb 를 설치하고, 비교할 오픈소스 LLM 둘을 Ollama 로 더 받습니다. 임베딩 모델(intfloat/multilingual-e5-small)과 재정렬 모델(cross-encoder/mmarco-mMiniLMv2-L12-H384-v1)은 처음 쓸 때 470MB 쯤씩 내려받습니다.

PowerShell
pip install sentence-transformers faiss-cpu chromadb
ollama pull gemma3:1b
ollama pull llama3.2:1b

10장에서는 MCP 서버와 클라이언트를 만드는 mcp 패키지를 설치합니다. 교안을 만든 PC 는 2.3.0 입니다. 1.x 와는 이름이 달라서(FastMCP 가 2.x 에서 MCPServer), 인터넷의 1.x 예제를 그대로 쓰면 오류가 납니다.

PowerShell
pip install mcp

11장에서는 서버 없이 도는 벡터DB 하나를 더 견주려고 qdrant-client 를 설치합니다. 교안을 만든 PC 는 1.20.0 입니다. 11장의 문서 읽기(html, docx, csv)는 표준 라이브러리만 쓰므로 더 설치할 것이 없습니다.

PowerShell
pip install qdrant-client

12장에서는 그림과 글을 함께 다루는 CLIP 모델 둘(clip-ViT-B-32 607MB, sentence-transformers/clip-ViT-B-32-multilingual-v1 543MB)을 처음 쓸 때 내려받고, 그림을 읽는 비전 언어 모델 qwen2.5vl:3b(3.2GB)를 Ollama 로 받습니다. 그림은 Pillow 로 읽습니다(torch 와 함께 설치되어 있다). 4GB GPU 에는 비전 모델이 다 올라가지 않아 일부를 CPU 에서 돌리므로, 그림 한 장 설명에 20초쯤 걸립니다.

PowerShell
ollama pull qwen2.5vl:3b

13장에서는 API 를 만드는 fastapi 를 설치합니다. 교안을 만든 PC 는 fastapi 0.162.0 입니다. 서버를 띄우는 uvicorn(0.54.0), 서버 없이 시험하는 TestClient 가 쓰는 httpx, 토큰을 만드는 PyJWT(2.15.1)는 앞 장의 패키지와 함께 이미 설치되어 있었습니다. 없으면 함께 설치합니다.

PowerShell
pip install fastapi uvicorn httpx PyJWT

14장에서는 웹 화면을 만드는 streamlit 을 설치합니다. 교안을 만든 PC 는 streamlit 1.66.1 입니다. compose 파일을 읽는 PyYAML(6.0.3)은 이미 있었습니다.

PowerShell
pip install streamlit

15장에서는 불러올 때 8비트·4비트로 줄이는 bitsandbytes 를 설치하고(교안을 만든 PC 는 0.50.2, NVIDIA GPU 가 있어야 한다), 같은 모델의 다른 양자화 단계를 Ollama 로 받습니다. GPTQ·AWQ 도구는 Windows 에서 설치가 어려워 설치하지 않았습니다.

PowerShell
pip install bitsandbytes
ollama pull qwen2.5:0.5b-instruct-q8_0
ollama pull qwen2.5:0.5b-instruct-fp16

16장은 새 패키지가 없습니다. 7장의 임베딩·재정렬 모델, 3장의 Qwen2.5-0.5B-Instruct, Ollama 의 qwen2.5:3b 를 다시 씁니다. vLLM 은 Windows 에서 바로 설치되지 않아 Linux 나 WSL2 의 우분투에서 설치합니다. 교안을 만든 PC 에는 설치하지 않았고, 아래 명령도 실행하지 않았습니다.

PowerShell
# WSL2 의 우분투 터미널에서
python3 -m venv vllm-env
source vllm-env/bin/activate
pip install vllm

21장도 새 패키지가 없습니다. 인젝션 시험과 요약은 Ollama 의 qwen2.5:3b, 개인정보 찾기는 파이썬의 re, 가명 처리는 hmac 과 secrets, GPU 메모리 확인은 PyTorch 의 torch.cuda.get_device_properties 와 Ollama 의 /api/ps 를 씁니다. 프로젝트의 CI 스크립트는 하위 프로세스로 돌리며, GitHub Actions 파일은 실행하지 않은 안내 코드입니다. garak, Presidio 같은 보안 도구는 설치하지 않았습니다.

20장도 새 패키지가 없습니다. 답 생성과 LLM 채점은 Ollama 의 qwen2.5:3b, 임베딩은 7장의 intfloat/multilingual-e5-small, KS 검정은 scikit-learn 과 함께 설치된 scipy(교안을 만든 PC 는 1.18.1), 대시보드는 14장의 streamlit 을 씁니다. 실습 1~4와 프로젝트는 Ollama 를 200번 가까이 부르므로 몇 분 걸립니다. 본문의 Prometheus 계기 코드는 실행하지 않은 안내 코드이고, prometheus_client 는 설치하지 않았습니다.

19장에서는 실험 기록과 모델 레지스트리를 맡는 mlflow 를 설치합니다. 교안을 만든 PC 는 mlflow 3.17.2 입니다. 기록은 SQLite 파일(out_mlflow.db)에 두므로 따로 서버를 띄우지 않아도 됩니다. 실행할 때 화면에 INFO, WARNING, DeprecationWarning 같은 안내가 나오지만 실습 결과와는 관계가 없습니다. Airflow 는 Windows 에서 바로 돌지 않아 설치하지 않았고, 19장의 Airflow DAG 와 Docker 명령은 안내 코드와 예상 출력입니다.

PowerShell
pip install mlflow
python -c "import mlflow; print(mlflow.__version__)"

18장도 새 패키지가 없습니다. 9장의 openai 라이브러리(Ollama 의 OpenAI 호환 tools), 7장의 e5 임베딩, 13장의 FastAPI 를 다시 씁니다. 모델은 qwen2.5:3b 와 견주기용 qwen2.5:1.5b 이고, 없으면 ollama pull qwen2.5:1.5b 로 받습니다(약 1GB).

17장도 새 패키지가 없습니다. 13장의 fastapi·uvicorn, 7장의 intfloat/multilingual-e5-small, scikit-learn, Ollama 의 qwen2.5:3b 를 다시 쓰고, compose 파일은 14장의 PyYAML 로 읽습니다. 프로젝트가 8171, 8172 번 포트에 서버를 띄웠다 끄므로, 다른 프로그램이 그 포트를 쓰고 있으면 번호를 바꿉니다. 프로젝트 3의 docker compose 명령은 실행하지 않은 안내 코드입니다. GPU 를 컨테이너에 주려면 Docker Desktop(WSL2)과 NVIDIA 드라이버가 필요합니다.

14장의 Docker 명령을 직접 실행해 보려면 Docker Desktop 이 필요합니다. Windows 에서는 WSL2 위에서 돌며, 관리자 권한으로 설치하고 재부팅해야 합니다. 직원이 많은 회사는 유료 구독이 필요할 수 있으니 조건을 확인합니다. 교안을 만든 PC 에는 설치하지 않았고, 아래 명령도 실행하지 않았습니다.

PowerShell
wsl --install
winget install -e --id Docker.DockerDesktop
docker run hello-world

뒤의 장에서 쓰는 패키지는 그 장의 첫머리에서 설치합니다. 버전과 설치 확인은 그 장을 만들 때 이 표에 더합니다.

패키지쓰는 곳비고
numpy, pandas, matplotlib1장부터 과정 내내이미 아시는 도구입니다
scikit-learn1장의 모델과 평가 지표
torch2장부터 신경망과 언어모델GPU 판과 CPU 판의 설치 명령이 다르다(위 참고)
transformers, sentencepiece3장부터 Hugging Face 모델교안을 만든 PC 는 transformers 5.21.0. 5 버전부터 pipeline("translation") 이 없어졌다
datasets, accelerate4장부터 학습 데이터와 Trainer교안을 만든 PC 는 datasets 5.1.0, accelerate 1.15.0. tokenizers 0.23.3 은 transformers 와 함께 설치된다
peft, trl5장의 LoRA 와 DPO교안을 만든 PC 는 peft 0.21.2, trl 1.16.0. trl 1.x 는 DPOConfig 의 loss_type 목록으로 SFT 손실을 섞는다
openai, python-dotenv, Ollama6장부터 외부 API 와 로컬 LLM교안을 만든 PC 는 openai 3.39.0, python-dotenv 1.2.4, Ollama 0.40.1(12장부터는 자동 업데이트된 0.40.12). Ollama 는 pip 가 아니라 따로 설치하는 프로그램이다(위 참고)
sentence-transformers, faiss-cpu, chromadb7장부터 임베딩과 벡터DB교안을 만든 PC 는 sentence-transformers 6.2.0, faiss-cpu 1.15.1, chromadb 1.5.9
mcp10장의 MCP 서버와 클라이언트교안을 만든 PC 는 2.3.0
qdrant-client11장의 벡터DB 견주기교안을 만든 PC 는 1.20.0. QdrantClient(path=…) 로 서버 없이 쓴다
bitsandbytes15장의 8비트·4비트 불러오기교안을 만든 PC 는 0.50.2. NVIDIA GPU 가 필요하다
fastapi, uvicorn, PyJWT13장의 API 와 인증교안을 만든 PC 는 fastapi 0.162.0, uvicorn 0.54.0, PyJWT 2.15.1
streamlit14장의 화면교안을 만든 PC 는 1.66.1. 화면 시험은 streamlit.testing.v1.AppTest
mlflow19장의 실험 기록과 모델 레지스트리교안을 만든 PC 는 3.17.2. 기록은 sqlite:///out_mlflow.db
Docker, vLLM, Airflow14장, 16장, 19장Linux 나 WSL 이 필요합니다. 교안을 만든 PC 에서는 실행하지 않았습니다

실행 확인하기

VS Code 에서 새 파이썬 파일을 만들어 아래 코드를 실행합니다. 버전이 나오면 설치가 끝난 것입니다.

Python
import sys
import numpy, pandas, matplotlib, sklearn, torch

print("python", sys.version.split()[0])
for m in (numpy, pandas, matplotlib, sklearn, torch):
    print(m.__name__, m.__version__)
print("GPU 사용 가능:", torch.cuda.is_available())
if torch.cuda.is_available():
    print("GPU 이름:", torch.cuda.get_device_name(0))
출력
python 3.14.6
numpy 2.5.4
pandas 3.1.0
matplotlib 3.11.2
sklearn 1.9.1
torch 2.14.1+cu126
GPU 사용 가능: True
GPU 이름: NVIDIA GeForce GTX 1650

위 출력은 교안을 만든 PC 의 것입니다. 버전 숫자가 조금 달라도 괜찮습니다. scikit-learn 은 설치할 때의 이름과 불러올 때의 이름(sklearn)이 다릅니다. torch 버전 끝의 +cu126 은 GPU 판이라는 표시이고, CPU 판은 +cpu 이거나 아무것도 붙지 않습니다. GPU 가 없는 PC 에서는 "GPU 사용 가능: False" 가 나오고, 실습은 그대로 돌아갑니다.

NVIDIA GPU 가 있는 PC 라면 GPU 이름과 메모리를 확인해 둡니다. 4장부터 모델 크기를 고를 때 씁니다. 없으면 이 명령이 오류를 내는데, 실습에는 지장이 없습니다.

PowerShell
nvidia-smi --query-gpu=name,memory.total --format=csv
출력
name, memory.total [MiB]
NVIDIA GeForce GTX 1650, 4096 MiB

실습 파일 놓기

실습 코드는 data 폴더를 작업 폴더로 삼습니다. 교안과 함께 받은 data 폴더를 과정 폴더 안에 두고, 코드 파일도 그 안에서 실행합니다. 파일 목록은 실습 데이터에 있습니다.

자주 나는 오류

오류 글까닭해결
이 시스템에서 스크립트를 실행할 수 없으므로PowerShell 이 가상환경을 켜는 스크립트를 막았다Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 를 한 번 실행하고 다시 켠다
ModuleNotFoundError: No module named 'sklearn'패키지를 다른 파이썬에 설치했다가상환경을 켠 터미널에서 다시 설치하고, VS Code 에서 .venv 의 파이썬을 골랐는지 본다
FileNotFoundError: delivery.csv작업 폴더가 data 가 아니다터미널에서 cd data 로 옮긴 뒤 실행하거나, 파일 경로를 data/delivery.csv 로 적는다
그래프의 한글이 네모로 나온다한글 글꼴이 정해지지 않았다그래프를 그리기 전에 plt.rcParams["font.family"] = "Malgun Gothic" 을 넣는다
nvidia-smi 를 찾을 수 없다NVIDIA GPU 나 드라이버가 없다GPU 없이 진행한다. 작은 모델은 CPU 로도 돈다
OSError: [WinError 1114] ... c10.dllWindows 의 Visual C++ 런타임이 오래되었다(교안을 만든 PC 는 14.28 에서 이 오류가 났다)관리자 권한 PowerShell 에서 winget install --id Microsoft.VCRedist.2015+.x64 를 실행하거나, Microsoft 에서 vc_redist.x64.exe 를 받아 설치한다. "설치된 앱"에 "Visual C++ 2015-2022 Redistributable (x64) - 14.4x" 이상이 보여야 한다
torch.cuda.is_available() 이 FalseCPU 판 torch 를 설치했다pip uninstall torch 뒤 위의 GPU 판 명령으로 다시 설치한다
KeyError: 'The task translation has been removed'transformers 5 버전부터 번역 pipeline 이 없어졌다3장 실습 5처럼 AutoModelForSeq2SeqLM 으로 직접 불러 generate 한다
모델을 내려받다가 멈추거나 ConnectionError인터넷이 끊겼거나 회사 방화벽이 Hugging Face 를 막는다인터넷이 되는 곳에서 한 번 받아 두면 다음부터는 저장된 파일을 쓴다
openai.APIConnectionError: Connection error.Ollama 서버가 꺼져 있다시작 메뉴에서 Ollama 를 켜거나 PowerShell 에서 ollama serve 를 실행한다
model "qwen2.5:3b" not found그 모델을 내려받지 않았다ollama pull qwen2.5:3b 로 받은 뒤 다시 실행한다
bind: Only one usage of each socket addressollama serve 를 실행했는데 서버가 이미 떠 있다오류가 아니다. 이미 떠 있는 서버를 그대로 쓴다
Ollama 의 답이 @@@@ 같은 글자로만 나온다교안을 만든 PC 에서 모델을 여러 번 바꿔 올린 뒤 가끔 생겼다ollama stop 모델이름 으로 내린 뒤 다시 부른다
Ollama 가 오류를 내거나 아주 느려진다(임베딩 모델과 함께 쓸 때)같은 파이썬에서 불러 둔 임베딩·재정렬 모델이 GPU 메모리를 차지했다임베딩 모델을 device="cpu" 로 불러 GPU 를 Ollama 에 비워 둔다(7장 프로젝트)
does not support tools (Ollama, 400)그 모델은 도구 호출을 지원하지 않는다(교안을 만든 PC 에서 gemma3:1b)qwen2.5 처럼 도구를 지원하는 모델을 쓰거나, 9장 실습 5의 ReAct 처럼 글로 도구를 쓰게 한다
No module named 'mcp.server.fastmcp'mcp 2.x 에서 FastMCP 가 MCPServer 로 바뀌었다from mcp.server.mcpserver import MCPServer 로 쓰거나, 1.x 예제를 쓰려면 pip install "mcp<2"
MCP 도구 결과가 Error executing tool … 뿐이다mcp 2.x 는 도구 함수의 예외 내용을 클라이언트에 보내지 않는다모델에게 알릴 오류는 예외 대신 {"오류": "…"} 결과로 돌려준다
ModuleNotFoundError: No module named 'out_offline'11장 실습 1이 만든 out_offline.py 가 없거나, 작업 폴더가 data 가 아니다실습 1을 먼저 실행하고, data 폴더에서 실행한다(실습 코드의 sys.path.insert(0, ".") 가 작업 폴더를 찾게 한다)
OSError: 폐쇄망: … 로 나가는 연결을 막았습니다11장의 막기가 켜진 채 인터넷이 필요한 일(새 모델 내려받기 등)을 했다모델은 막기 전에 한 번 받아 둔다. 막기를 풀려면 out_offline.release()
Storage folder … is already accessed by another instance of Qdrant clientQdrant 로컬 모드가 연 폴더를 닫지 않고 다시 열었다쓴 뒤 qc.close() 를 부르고, 주피터라면 커널을 다시 시작한다
UnicodeDecodeError: 'utf-8' codec can't decode옛 메모장 방식(cp949)으로 저장한 파일이다11장 실습 2의 decode() 처럼 utf-8 로 안 되면 cp949 로 읽는다
비전 모델의 답이 아주 느리다(그림 한 장에 수십 초)모델이 GPU 에 다 올라가지 않아 일부가 CPU 에서 돈다. 앞서 쓴 다른 모델이 GPU 에 남아 있으면 더 느리다ollama ps 로 확인하고 ollama stop 모델이름 으로 다른 모델을 내린다. 설명은 미리 만들어 파일로 저장해 두고 쓴다(12장 실습 3)
Ollama 를 쓰다가 버전이 바뀌었다Windows 의 Ollama 앱은 스스로 업데이트한다(교안을 만든 PC 는 12장 작업 중 0.40.1 에서 0.40.12 로)결과 숫자가 조금 달라질 수 있다. 수업 전에 ollama --version 을 확인한다
uvicorn 서버에 보낸 요청이 한 번에 2초쯤 걸린다(Windows)localhost 가 먼저 IPv6(::1)로 연결을 시도하는데 uvicorn 은 127.0.0.1 에서만 기다린다주소를 http://127.0.0.1:포트 로 적거나, 서버를 --host :: 로 띄운다
address already in use 또는 [WinError 10048]같은 포트에 서버가 이미 떠 있다(앞서 띄운 서버를 끄지 않았다)앞 서버를 끄거나(Ctrl+C, terminate()) 다른 포트를 쓴다
UnicodeEncodeError: 'ascii' codec (요청 머리글)HTTP 머리글에 한글을 넣었다머리글 값(API 키 등)은 영문과 숫자로 쓴다. 한글은 본문(JSON)에 넣는다
응답이 422 이고 detail 이 온다요청 본문이 Pydantic 모델의 규칙에 어긋났다detail 의 loc(칸)과 msg(까닭)를 보고 고친다
AppTest 가 RuntimeError: AppTest script run timed out화면이 모델이나 API 를 기다리는 동안 기본 시간(3초)이 지났다AppTest.from_file(..., default_timeout=120) 처럼 시간을 늘린다
화면에서 단추를 눌러도 앞의 결과가 사라진다Streamlit 은 누를 때마다 스크립트를 처음부터 다시 실행한다남길 값은 st.session_state 에 둔다
컨테이너로 띄운 API 에 바깥에서 연결되지 않는다서버를 127.0.0.1 로 띄웠다컨테이너 안에서는 --host 0.0.0.0(Streamlit 은 --server.address 0.0.0.0)으로 띄운다
Ollama 의 답이 888888… 처럼 같은 글자만 되풀이된다교안을 만든 PC 에서 같은 파이썬 프로그램이 앞서 PyTorch 로 GPU 를 쓴 뒤에 생겼다. 따로 돌리면 생기지 않았다모델을 내렸다(keep_alive: 0) 다시 묻는다(15장 실습 3의 ask()). 양자화 단계의 품질로 오해하지 않는다
MatMul8bitLt: inputs will be cast from torch.bfloat16 to float168비트로 불러올 때 계산 꼴을 정하지 않았다from_pretrained(..., dtype=torch.float16) 을 함께 준다
Ollama 가 500 Internal Server Error 를 돌려주고 기록에 CUDA error: an illegal memory access 가 남는다교안을 만든 PC(GTX 1650)에서 PyTorch 가 GPU 를 쓰는 동안이나 바로 뒤에 Ollama 가 모델을 올릴 때 가끔 생겼다모델을 내렸다(keep_alive: 0) 다시 보낸다(16장 실습의 chat()). PyTorch 모델은 쓴 뒤 del 과 torch.cuda.empty_cache() 로 GPU 를 돌려준다
동시에 요청을 보내도 처리량이 늘지 않고 기다리는 시간만 길어진다Ollama 가 요청을 하나씩 처리하고 있다(교안을 만든 PC 의 기본 설정)서버를 띄울 때 환경 변수 OLLAMA_NUM_PARALLEL 로 함께 처리할 수를 늘리거나(메모리가 더 든다), 동시 사용자가 많으면 vLLM 같은 서버용 엔진을 쓴다(16장)
CUDA out of memoryGPU 메모리가 모자라다배치 크기를 줄이거나 작은 모델을 쓴다. 4GB GPU 는 4장의 작은 모델까지가 알맞다
← 이전LLM 엔지니어링다음 →과정 로드맵과 STEP 요약