2025λ 11μ, AIλ μΌμμ΄ λμμ΅λλ€. νμ§λ§ ChatGPT κ°μ μΈλΆ μλΉμ€λ₯Ό μ°μλ λ§€μ ꡬλ λ£μ κ°μΈ μ 보 μ μΆ κ±±μ β μ΄ λ°λΌμ΅λλ€.
ν΄κ²°μ± μ λ°λ‘ βλ‘컬 LLMβμ λλ€. λλ Έ λ°λλ νλ‘(NBP)μ κ°λ ₯ν μΉ©μ κ³Ό **μ μ© NPU(AI κ°μκΈ°)**λ₯Ό μ΄μ©ν΄ μΈν°λ· μμ΄λ λλ§μ AI λΉμλ₯Ό κ°μ§ μ μμ΅λλ€.
π NBPμ μ₯μ : μΈλΆ μλ² λμ μ§ π μμ AIλ₯Ό λ리λ―λ‘, λ΄ μ§λ¬Έμ΄λ λ°μ΄ν°κ° μΈλΆλ‘ μ μΆλ μΌλ €κ° μ ν μμ΅λλ€.
NBPμ LLMμ ꡬλνλ κ°μ₯ μ¬μ°λ©΄μλ βνλ‘λ€μ΄β λ°©λ²μ λ컀λ₯Ό μ΄μ©νλ κ²μ λλ€.
2025λ ν NBPμ ν΅μ¬μ NPUμ λλ€. NPUλ₯Ό LLM ꡬλμ μ¬μ©νλ €λ©΄, λμ»€κ° NPU νλμ¨μ΄μ μ κ·Όν μ μλλ‘ κΆνμ μ€μ ν΄μΌ ν©λλ€.
Bash
# NBP μμ€ν
μμ NPU λλΌμ΄λ²κ° μΈμλμλμ§ νμΈ
ls /dev/ | grep nna
π‘ νμΈ κ²°κ³Ό: μ λͺ λ Ήμ΄λ‘
nna0λλ μ΄μ μ μ¬ν μ₯μΉ νμΌμ΄ μΆλ ₯λμ΄μΌ ν©λλ€. νμΌμ΄ μλ€λ©΄, λ컀 λͺ λ Ήμ΄μ NPU μ κ·Ό μ΅μ μ μΆκ°ν μ€λΉκ° λ κ²μ λλ€.
Ollamaλ λ‘컬 LLM ꡬλμ κ°μ₯ μ½κ² λμμ£Όλ 컨ν μ΄λμ λλ€. λ€μν μν LLM λͺ¨λΈλ€μ μ½κ² λ€μ΄λ‘λνκ³ μ€νν μ μμ΅λλ€. NBPμ ARM μν€ν μ²λ₯Ό 곡μ μ§μν©λλ€.
ν°λ―Έλ(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λ‘λ§ μ°μ°λ©λλ€.
Bash
docker logs ollama
μ΄μ Ollama λ΄λΆμμ μ¬μ©ν κ²½λνλ LLMμ μ ννκ³ λ€μ΄λ‘λν©λλ€. NBPμ RAM μ©λ(8~16GB)μ λ§λ λͺ¨λΈμ μ νν΄μΌ ν©λλ€.
Bash
docker exec -it ollama bash
NBPμ κ°μ μ μ λ ₯ μ₯μΉμλ Q4 λλ Q5 (4~5λΉνΈ μμν) λͺ¨λΈμ΄ μ ν©ν©λλ€. (μμν λͺ¨λΈμ μ±λ₯ μμ€μ μ΅μννλ©΄μ ν¬κΈ°λ₯Ό μ€μΈ λͺ¨λΈμ λλ€.)
Bash
# TinyLlama 1.1B λͺ¨λΈμ λ€μ΄λ‘λνκ³ μ€ννλ μμ
ollama pull tinyllama
# μ€ν λ° λν μμ
ollama run tinyllama
ν°λ―Έλμμ λννλ κ²μ λΆνΈν©λλ€. ChatGPTμ²λΌ μΉ λΈλΌμ°μ μμ λνν μ μλλ‘ μΉ UIλ₯Ό μΆκ°λ‘ μ€μΉν©λλ€.
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 λΉμ νλ©΄μ΄ λνλ©λλ€.| λ¬Έμ μν© | μμΈ | ν΄κ²°μ± |
| λͺ¨λΈ λ‘λ© μ€ λ©μΆ€ | RAM μ©λ λΆμ‘± (OOM: Out Of Memory) | λ μμ ν¬κΈ°μ Q4 μμν λͺ¨λΈμ μ¬μ©νκ±°λ, μ€μ(Swap) λ©λͺ¨λ¦¬λ₯Ό μ€μ ν©λλ€. |
| μλκ° λ무 λλ¦Ό | NPU μ΅μ λλ½ λλ λλΌμ΄λ² μ€λ₯ | --device /dev/nna0... μ΅μ
μ λΉ λ¨λ¦¬μ§ μμλμ§ λ€μ νμΈν©λλ€. |
| 컨ν μ΄λ μ μ λΆκ° | λ°©νλ²½(UFW) λλ ν¬νΈ μΆ©λ | NBPμ 리λ μ€ λ°©νλ²½(UFW)μμ 11434, 3000 ν¬νΈλ₯Ό μ΄μ΄μ€λλ€. |
π κ²°λ‘ : λλ Έ λ°λλ νλ‘λ λ‘컬 AI μλλ₯Ό μ¬λ μμ§λ§ κ°λ ₯ν μ΄μ μ λλ€. μ΄ κ°μ΄λλ₯Ό ν΅ν΄ μ¬λ¬λΆλ§μ νλΌμ΄λΉ AI νκ²½μ ꡬμΆνκ³ , ꡬλ λ£μ μ 보 μ μΆ κ±±μ μλ μλ‘μ΄ AI κ²½νμ μμνμΈμ!
λ‘컬 λ€νΈμν¬ νκ²½μ μ‘°κΈμ΄λΌλ λ€λ€λ³Έ μ¬λμ΄λΌλ©΄ ν λ²μ―€μ λ§μ£ΌμΉλ μ΅μν λ¨μ΄κ° μμ΅λλ€. λ°λ‘ NetBIOSμ NBTμ λλ€.…
μλ νμΈμ! νλ μΉ κ°λ°μμ λ°μ΄ν° κ΅νμ ν΅μ¬μΈ JSON(JavaScript Object Notation)μ λμ± κ°λ ₯νκ³ μμ μ μΌλ‘ λ§λ€μ΄μ£Όλ λꡬ,…
β ECMAScript 3(E3)λ 무μμΌκΉ ECMAScript 3λ 1999λ μ 곡μνλ μλ°μ€ν¬λ¦½νΈ νμ€μ΄λ€. μ§κΈ 보면 μ€λλ κΈ°μ κ°μ§λ§,…
CoffeeScriptλ νλ νλ‘ νΈμλ κ°λ° μνκ³μμ λ§€μ° μΈκΈ° μμλ μΈμ΄μκ³ , μ§κΈλ νΉμ νλ‘μ νΈλ λ κ±°μ μμ€ν , κ°κ²°ν…
νλμ μΈ νλ‘κ·Έλλ° νκ²½μμ λ©λͺ¨λ¦¬ λμ(Memory Leak)λ μ¬μ ν μ ν리μΌμ΄μ μ μ±λ₯ μ νμ μΆ©λμ μΌμΌν€λ μ£Όμ μμΈ μ€…
(Critical Rendering Path, ν΅μ¬ λ λλ§ κ²½λ‘ μλ²½ μ΄ν΄) μΉ λΈλΌμ°μ μ μ£Όμλ₯Ό μ λ ₯νκ³ μν°λ₯Ό λλ₯΄λ μκ°,…