오픈소스 LLM: Llama 3 로컬 실행

# 오픈소스 LLM: Llama 3 로컬 실행

![Llama 3](https://images.unsplash.com/photo-1620712943543-bcc4688e7485?q=80&w=2070&auto=format&fit=crop)

안녕하세요! 오늘은 **Meta의 Llama 3**를 로컬에서 실행하는 방법을 알아봅니다! 🦙

## Llama 3란?

Meta(Meta AI)에서 개발한 오픈소스 LLM입니다.

**특징:**
– 상용 사용 가능 (라이선스 개선)
– 8B, 70B 파라미터 버전
– 강력한 성능
– 로컬 실행 가능

## 1. 시스템 요구사항

### Llama 3 8B (최소)
– RAM: 8GB 이상
– GPU: NVIDIA GTX 1060 이상 (선택)
– 저장공간: 8GB

### Llama 3 70B (추천)
– RAM: 32GB 이상
– GPU: NVIDIA RTX 3060 이상
– 저장공간: 40GB

## 2. Ollama 사용 (가장 쉬운 방법)

### 설치

**macOS:**
“`bash
curl -fsSL https://ollama.ai/install.sh | sh
“`

**Linux:**
“`bash
curl -fsSL https://ollama.ai/install.sh | sh
“`

**Windows:**
https://ollama.ai/download

### 모델 다운로드

“`bash
ollama pull llama3:8b
ollama pull llama3:70b
“`

### 실행

“`bash
ollama run llama3
“`

## 3. Python에서 사용

### 라이브러리 설치

“`bash
pip install ollama langchain langchain-community
“`

### 기본 사용

“`python
from langchain_community.llms import Ollama

llm = Ollama(model=”llama3″)

response = llm.invoke(“안녕하세요! 오늘 날씨가 어때요?”)
print(response)
“`

### 스트리밍

“`python
from langchain_community.llms import Ollama

llm = Ollama(model=”llama3″)

for chunk in llm.stream(“Python으로 간단한 계산기 만들어줘”):
print(chunk, end=””, flush=True)
“`

## 4. Node.js에서 사용

“`typescript
import { Ollama } from “@langchain/community/llms/ollama”;

const llm = new Ollama({
model: “llama3”,
baseUrl: “http://localhost:11434”,
});

const response = await llm.invoke(“안녕하세요!”);
console.log(response);
“`

## 5. Next.js와 통합

“`typescript
// app/api/chat/route.ts
import { Ollama } from “@langchain/community/llms/ollama”;

export async function POST(req: Request) {
const { messages } = await req.json();

const llm = new Ollama({
model: “llama3”,
temperature: 0.7,
});

const response = await llm.invoke(
messages[messages.length – 1].content
);

return Response.json({ response });
}
“`

## 6. GPU 가속

### NVIDIA GPU 사용

“`bash
# CUDA 드라이버 설치 후
ollama run llama3 –gpu
“`

### 성능 비교

| 설정 | 속도 | RAM 사용량 |
|——|——|———–|
| CPU만 | ~5 토큰/초 | ~16GB |
| GPU 8GB | ~20 토큰/초 | ~8GB |
| GPU 24GB | ~50 토큰/초 | ~8GB |

## 7. 커스터마이징

### 시스템 프롬프트

“`typescript
const llm = new Ollama({
model: “llama3”,
system: “너는 친절한 한국어 튜터야.”,
});
“`

### 토큰 제한

“`typescript
const llm = new Ollama({
model: “llama3”,
numCtx: 4096, // 컨텍스트 길이
});
“`

## 8. RAG와 결합

“`typescript
import { OllamaEmbeddings } from “@langchain/community/embeddings/ollama”;
import { Chroma } from “@langchain/community/vectorstores/chroma”;

const embeddings = new OllamaEmbeddings({
model: “llama3”,
});

const vectorStore = await Chroma.fromDocuments(
documents,
embeddings
);

const llm = new Ollama({ model: “llama3” });

const chain = RetrievalQAChain.fromLLM(
llm,
vectorStore.asRetriever()
);
“`

## 9. 성능 최적화

### 1. 양자화 (Quantization)

“`bash
ollama run llama3:8b-q4_0 # 4-bit 양자화
ollama run llama3:8b-q8_0 # 8-bit 양자화
“`

### 2. 배치 처리

“`typescript
const responses = await Promise.all([
llm.invoke(“질문 1”),
llm.invoke(“질문 2”),
llm.invoke(“질문 3”),
]);
“`

### 3. 캐싱

“`typescript
import { Cache } from “langchain/cache”;
import { InMemoryCache } from “@langchain/core/caches”;

const cache = new InMemoryCache();
llm.cache = cache;
“`

## 10. 에러 해결

### 메모리 부족

“`bash
# 더 작은 모델 사용
ollama run llama3:8b-q4_0

# 시스템 메모리 확인
top -p $(pgrep ollama)
“`

### 속도 느림

“`bash
# GPU 확인
nvidia-smi

# Ollama 재시작
pkill ollama
ollama serve
“`

## 결론

Llama 3는 로컬에서 실행 가능한 강력한 오픈소스 LLM입니다!

**장점:**
– ✅ 데이터 프라이버시 보장
– ✅ 비용 절감 (API 비용 없음)
– ✅ 인터넷 연결 불필요
– ✅ 커스터마이징 가능

**단점:**
– ❌ 하드웨어 요구사항
– ❌ GPT-4o보다 성능 낮음
– ❌ 설정 복잡도

## 다음 단계

– 🔧 파인튜닝 시도
– 📊 성능 벤치마킹
– 🌐 웹 서비스 배포

## 참고 자료

– [Ollama 문서](https://ollama.ai/)
– [Llama 3 모델 카드](https://llama.meta.com/llama3/)
– [Hugging Face Llama 3](https://huggingface.co/meta-llama/Meta-Llama-3-8B)

질문이 있나요? 댓글로 남겨주세요! 😊

**다음 포스팅:** AI 모델 비교: GPT vs Claude vs Gemini