IT

πŸ€–λ‚˜λ…Έ λ°”λ‚˜λ‚˜ ν”„λ‘œ!μ›” 2λ§Œμ› μ•„λΌμ„Έμš”! λ‚˜λ…Έ λ°”λ‚˜λ‚˜ ν”„λ‘œλ‘œ λ‚˜λ§Œμ˜ μ±—GPT λ§Œλ“€κΈ° (둜컬 LLM 도컀 μ„€μ • μ™„λ²½ κ°€μ΄λ“œ)

ν”„λ‘€λ‘œκ·Έ: 둜컬 LLM, 이제 선택이 μ•„λ‹Œ ν•„μˆ˜!

2025λ…„ 11μ›”, AIλŠ” 일상이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ ChatGPT 같은 μ™ΈλΆ€ μ„œλΉ„μŠ€λ₯Ό μ“°μžλ‹ˆ λ§€μ›” κ΅¬λ…λ£Œμ™€ 개인 정보 유좜 κ±±μ • ❌ 이 λ”°λΌμ˜΅λ‹ˆλ‹€.

해결책은 λ°”λ‘œ β€˜λ‘œμ»¬ LLMβ€™μž…λ‹ˆλ‹€. λ‚˜λ…Έ λ°”λ‚˜λ‚˜ ν”„λ‘œ(NBP)의 κ°•λ ₯ν•œ μΉ©μ…‹κ³Ό **μ „μš© NPU(AI 가속기)**λ₯Ό μ΄μš©ν•΄ 인터넷 없이도 λ‚˜λ§Œμ˜ AI λΉ„μ„œλ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

🌟 NBP의 μž₯점: μ™ΈλΆ€ μ„œλ²„ λŒ€μ‹  μ§‘ 🏠 μ—μ„œ AIλ₯Ό λŒλ¦¬λ―€λ‘œ, λ‚΄ μ§ˆλ¬Έμ΄λ‚˜ 데이터가 μ™ΈλΆ€λ‘œ 유좜될 μ—Όλ €κ°€ μ „ν˜€ μ—†μŠ΅λ‹ˆλ‹€.


1. μ‹œμž‘ν•˜κΈ° μ „ μ€€λΉ„λ¬Ό 체크: μ™œ 도컀(Docker)λ₯Ό 써야 ν•˜λ‚˜μš”?

NBP에 LLM을 κ΅¬λ™ν•˜λŠ” κ°€μž₯ μ‰¬μš°λ©΄μ„œλ„ β€˜ν”„λ‘œλ‹€μš΄β€™ 방법은 도컀λ₯Ό μ΄μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

  • λ„μ»€λž€? λ³΅μž‘ν•œ μ„œλ²„ ν”„λ‘œκ·Έλž¨μ„ **ν•˜λ‚˜μ˜ μƒμž(μ»¨ν…Œμ΄λ„ˆ)**에 λ‹΄μ•„ 좩돌 없이 μ‹€ν–‰μ‹œμΌœ μ£ΌλŠ” 가상화 κΈ°μˆ μž…λ‹ˆλ‹€.
  • μž₯점: 운영체제(OS) ν™˜κ²½μ΄ 달라도 μ–΄λ””μ„œλ“  μ‹€ν–‰ κ°€λŠ₯ν•˜λ©°, μ„€μΉ˜μ™€ μ‚­μ œκ°€ 맀우 κΉ”λ”ν•©λ‹ˆλ‹€.

πŸ›  ν•„μˆ˜ μ€€λΉ„ 사항

  • NBP κΈ°λ³Έ μ„ΈνŒ… μ™„λ£Œ: 이전 κ°€μ΄λ“œλŒ€λ‘œ NBP에 λ¦¬λˆ…μŠ€ OS와 도컀가 μ„€μΉ˜λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μΆ©λΆ„ν•œ RAMκ³Ό μ €μž₯ 곡간: μ΅œμ†Œ 8GB RAM, NVMe SSD에 20GB μ΄μƒμ˜ μ—¬μœ  곡간이 ν•„μš”ν•©λ‹ˆλ‹€. (λͺ¨λΈ 파일 크기 λ•Œλ¬Έ)

2. πŸ”Œ 1단계: NPU λ“œλΌμ΄λ²„μ™€ 도컀 연동 확인 (Deep Dive)

2025λ…„ν˜• NBP의 핡심은 NPUμž…λ‹ˆλ‹€. NPUλ₯Ό LLM ꡬ동에 μ‚¬μš©ν•˜λ €λ©΄, 도컀가 NPU ν•˜λ“œμ›¨μ–΄μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ κΆŒν•œμ„ μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

– NPU λ“œλΌμ΄λ²„ 확인 λͺ…λ Ήμ–΄

Bash

# NBP μ‹œμŠ€ν…œμ—μ„œ NPU λ“œλΌμ΄λ²„κ°€ μΈμ‹λ˜μ—ˆλŠ”μ§€ 확인
ls /dev/ | grep nna

πŸ’‘ 확인 κ²°κ³Ό: μœ„ λͺ…λ Ήμ–΄λ‘œ nna0 λ˜λŠ” 이와 μœ μ‚¬ν•œ μž₯치 파일이 좜λ ₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 파일이 μžˆλ‹€λ©΄, 도컀 λͺ…령어에 NPU μ ‘κ·Ό μ˜΅μ…˜μ„ μΆ”κ°€ν•  μ€€λΉ„κ°€ 된 κ²ƒμž…λ‹ˆλ‹€.


3. πŸ’Ύ 2단계: 둜컬 LLM ꡬ동 μ—”μ§„ β€˜Ollama’ μ„€μΉ˜ 및 μ‹€ν–‰

OllamaλŠ” 둜컬 LLM ꡬ동을 κ°€μž₯ μ‰½κ²Œ λ„μ™€μ£ΌλŠ” μ»¨ν…Œμ΄λ„ˆμž…λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ†Œν˜• LLM λͺ¨λΈλ“€μ„ μ‰½κ²Œ λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. NBP의 ARM μ•„ν‚€ν…μ²˜λ₯Ό 곡식 μ§€μ›ν•©λ‹ˆλ‹€.

β‘  Ollama μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ λͺ…λ Ήμ–΄

터미널(SSH)에 μ ‘μ†ν•˜μ—¬ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.

Bash

docker run -d \
  -v /home/user/.ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  --restart always \
  --device /dev/nna0:/dev/nna0 \
  ollama/ollama

λͺ…λ Ήμ–΄ μ„€λͺ… (핡심)

  • -v ...: 호슀트(NBP)와 μ»¨ν…Œμ΄λ„ˆ 간에 λͺ¨λΈ νŒŒμΌμ„ κ³΅μœ ν•©λ‹ˆλ‹€. (λͺ¨λΈμ„ ν•œ 번만 λ‹€μš΄λ‘œλ“œν•˜λ„λ‘)
  • -p 11434:11434: μ™ΈλΆ€μ—μ„œ 접속할 수 μžˆλ„λ‘ 포트(11434)λ₯Ό μ—½λ‹ˆλ‹€.
  • --device /dev/nna0:/dev/nna0: πŸ”Œ NPUλ₯Ό 도컀 μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€λ‘œ μ—°κ²°ν•˜λŠ” 핡심 μ˜΅μ…˜μž…λ‹ˆλ‹€. 이 μ˜΅μ…˜μ΄ μ—†μœΌλ©΄ NPUκ°€ μ•„λ‹Œ 느린 CPU둜만 μ—°μ‚°λ©λ‹ˆλ‹€.

β‘‘ Ollama μ»¨ν…Œμ΄λ„ˆ 접속 확인

Bash

docker logs ollama
  • λ‘œκ·Έμ— 였λ₯˜κ°€ μ—†λ‹€λ©΄, Ollama μ»¨ν…Œμ΄λ„ˆκ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λœ κ²ƒμž…λ‹ˆλ‹€.

4. 🧠 3단계: λ‚˜λ…Έ λ°”λ‚˜λ‚˜ ν”„λ‘œμ— μ΅œμ ν™”λœ λͺ¨λΈ λ‹€μš΄λ‘œλ“œ

이제 Ollama λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  κ²½λŸ‰ν™”λœ LLM을 μ„ νƒν•˜κ³  λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. NBP의 RAM μš©λŸ‰(8~16GB)에 λ§žλŠ” λͺ¨λΈμ„ 선택해야 ν•©λ‹ˆλ‹€.

β‘  μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€λ‘œ μ§„μž…

Bash

docker exec -it ollama bash

β‘‘ μ†Œν˜• LLM λͺ¨λΈ λ‹€μš΄λ‘œλ“œ 및 μ‹€ν–‰

NBP와 같은 μ €μ „λ ₯ μž₯μΉ˜μ—λŠ” Q4 λ˜λŠ” Q5 (4~5λΉ„νŠΈ μ–‘μžν™”) λͺ¨λΈμ΄ μ ν•©ν•©λ‹ˆλ‹€. (μ–‘μžν™” λͺ¨λΈμ€ μ„±λŠ₯ 손싀을 μ΅œμ†Œν™”ν•˜λ©΄μ„œ 크기λ₯Ό 쀄인 λͺ¨λΈμž…λ‹ˆλ‹€.)

Bash

# TinyLlama 1.1B λͺ¨λΈμ„ λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•˜λŠ” μ˜ˆμ‹œ
ollama pull tinyllama
# μ‹€ν–‰ 및 λŒ€ν™” μ‹œμž‘
ollama run tinyllama
  • κ²°κ³Ό: πŸ–₯ 이제 SSH ν„°λ―Έλ„μ—μ„œ 둜컬 AI와 λŒ€ν™”λ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (인터넷 μ—°κ²° ν•„μš” ❌)

5. 🏠 4단계: μ›Ή μΈν„°νŽ˜μ΄μŠ€(Web UI) μ—°κ²°

ν„°λ―Έλ„μ—μ„œ λŒ€ν™”ν•˜λŠ” 것은 λΆˆνŽΈν•©λ‹ˆλ‹€. ChatGPT처럼 μ›Ή λΈŒλΌμš°μ €μ—μ„œ λŒ€ν™”ν•  수 μžˆλ„λ‘ μ›Ή UIλ₯Ό μΆ”κ°€λ‘œ μ„€μΉ˜ν•©λ‹ˆλ‹€.

– Web UI μ»¨ν…Œμ΄λ„ˆ μ„€μΉ˜ (Open WebUI λ“±)

Open WebUI 같은 μ›Ή ν”„λŸ°νŠΈμ—”λ“œ νˆ΄μ„ μ„€μΉ˜ν•˜λ©΄, NBP의 IP μ£Όμ†Œλ₯Ό 톡해 마치 ChatGPT처럼 κΉ”λ”ν•œ ν™˜κ²½μ—μ„œ AIλ₯Ό μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Bash

# Web UI μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ λͺ…λ Ήμ–΄ (별도 포트 3000 μ‚¬μš© μ˜ˆμ‹œ)
docker run -d \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  --name webui \
  --restart always \
  ghcr.io/open-webui/open-webui:latest
  • μ΅œμ’… 접속: μ›Ή λΈŒλΌμš°μ € μ£Όμ†Œμ°½μ— http://[NBP의 IPμ£Όμ†Œ]:3000 을 μž…λ ₯ν•˜λ©΄ λ‚˜λ§Œμ˜ AI λΉ„μ„œ 화면이 λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

6. ❌ 문제 ν•΄κ²° 및 μ„±λŠ₯ μ΅œμ ν™”

문제 상황원인해결책
λͺ¨λΈ λ‘œλ”© 쀑 멈좀RAM μš©λŸ‰ λΆ€μ‘± (OOM: Out Of Memory)더 μž‘μ€ 크기의 Q4 μ–‘μžν™” λͺ¨λΈμ„ μ‚¬μš©ν•˜κ±°λ‚˜, μŠ€μ™‘(Swap) λ©”λͺ¨λ¦¬λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.
속도가 λ„ˆλ¬΄ 느림NPU μ˜΅μ…˜ λˆ„λ½ λ˜λŠ” λ“œλΌμ΄λ²„ 였λ₯˜--device /dev/nna0... μ˜΅μ…˜μ„ λΉ λœ¨λ¦¬μ§€ μ•Šμ•˜λŠ”μ§€ λ‹€μ‹œ ν™•μΈν•©λ‹ˆλ‹€.
μ»¨ν…Œμ΄λ„ˆ 접속 λΆˆκ°€λ°©ν™”λ²½(UFW) λ˜λŠ” 포트 좩돌NBP의 λ¦¬λˆ…μŠ€ λ°©ν™”λ²½(UFW)μ—μ„œ 11434, 3000 포트λ₯Ό μ—΄μ–΄μ€λ‹ˆλ‹€.

🌟 κ²°λ‘ : λ‚˜λ…Έ λ°”λ‚˜λ‚˜ ν”„λ‘œλŠ” 둜컬 AI μ‹œλŒ€λ₯Ό μ—¬λŠ” μž‘μ§€λ§Œ κ°•λ ₯ν•œ μ—΄μ‡ μž…λ‹ˆλ‹€. 이 κ°€μ΄λ“œλ₯Ό 톡해 μ—¬λŸ¬λΆ„λ§Œμ˜ 프라이빗 AI ν™˜κ²½μ„ κ΅¬μΆ•ν•˜κ³ , κ΅¬λ…λ£Œμ™€ 정보 유좜 κ±±μ • μ—†λŠ” μƒˆλ‘œμš΄ AI κ²½ν—˜μ„ μ‹œμž‘ν•˜μ„Έμš”!

infodori1234

Recent Posts

πŸ–₯ NetBIOS over TCP IP NBT μ™„μ „ κ°€μ΄λ“œ

둜컬 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ„ μ‘°κΈˆμ΄λΌλ„ 닀뀄본 μ‚¬λžŒμ΄λΌλ©΄ ν•œ λ²ˆμ―€μ€ λ§ˆμ£ΌμΉ˜λŠ” μ΅μˆ™ν•œ 단어가 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ NetBIOS와 NBTμž…λ‹ˆλ‹€.…

2κ°œμ›” ago

🏠 JSON Schema: 데이터 μœ νš¨μ„± κ²€μ¦μ˜ ν‘œμ€€ 섀계도 πŸ–₯

μ•ˆλ…•ν•˜μ„Έμš”! ν˜„λŒ€ μ›Ή κ°œλ°œμ—μ„œ 데이터 κ΅ν™˜μ˜ 핡심인 JSON(JavaScript Object Notation)을 λ”μš± κ°•λ ₯ν•˜κ³  μ•ˆμ •μ μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 도ꡬ,…

2κ°œμ›” ago

🏠 ECMAScript 3 ν˜Έν™˜μ„± μ™„μ „ 정리 κ°€μ΄λ“œ

❌ ECMAScript 3(E3)λž€ λ¬΄μ—‡μΌκΉŒ ECMAScript 3λŠ” 1999년에 κ³΅μ‹ν™”λœ μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œμ€€μ΄λ‹€. μ§€κΈˆ 보면 였래된 기술 κ°™μ§€λ§Œ,…

2κ°œμ›” ago

πŸ–₯ CoffeeScript μ™„μ „ κ°€μ΄λ“œ

CoffeeScriptλŠ” ν•œλ•Œ ν”„λ‘ νŠΈμ—”λ“œ 개발 μƒνƒœκ³„μ—μ„œ 맀우 인기 μžˆμ—ˆλ˜ μ–Έμ–΄μ˜€κ³ , μ§€κΈˆλ„ νŠΉμ • ν”„λ‘œμ νŠΈλ‚˜ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œ, κ°„κ²°ν•œ…

2κ°œμ›” ago

🏠 λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°: πŸ–₯ λ‚­λΉ„λ˜λŠ” μ»΄ν“¨ν„°μ˜ κΈ°μ–΅λ ₯ ❌

ν˜„λŒ€μ μΈ ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½μ—μ„œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak)λŠ” μ—¬μ „νžˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜μ™€ μΆ©λŒμ„ μΌμœΌν‚€λŠ” μ£Όμš” 원인 쀑…

2κ°œμ›” ago

πŸ–₯️ λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ • (CRP) : μ›ΉνŽ˜μ΄μ§€κ°€ λˆˆμ•žμ— λ‚˜νƒ€λ‚˜κΈ°κΉŒμ§€μ˜ λ§ˆλ²•

(Critical Rendering Path, 핡심 λ Œλ”λ§ 경둜 μ™„λ²½ 이해) μ›Ή λΈŒλΌμš°μ €μ— μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜κ³  μ—”ν„°λ₯Ό λˆ„λ₯΄λŠ” μˆœκ°„,…

2κ°œμ›” ago