Ollama ๐Ÿฆ™

calicoยท2025๋…„ 5์›” 7์ผ

Artificial Intelligence

๋ชฉ๋ก ๋ณด๊ธฐ
21/143

Ollama ๋ž€?


  • Ollama(์˜ฌ๋ผ๋งˆ)๋Š” ๋กœ์ปฌ PC(์œˆ๋„์šฐ, ๋งฅ, ๋ฆฌ๋ˆ…์Šค ๋“ฑ)์—์„œ ์ง์ ‘ ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ(LLM)๋“ค์„ ์†์‰ฝ๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • Ollama์˜ ํŠน์ง•

    • ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ์™€ ์‹คํ–‰์ด ๋งค์šฐ ๊ฐ„ํŽธ: ํ„ฐ๋ฏธ๋„ ํ•œ ์ค„ ๋ช…๋ น์œผ๋กœ ์œ ๋ช…ํ•œ ์˜คํ”ˆ์†Œ์Šค LLM(์˜ˆ: Llama2, Mistral, Gemma ๋“ฑ)์„ ๋ฐ”๋กœ ๋ฐ›์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋กœ์ปฌ ์‹คํ–‰: ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์•„๋„ ๊ฐœ์ธ PC์—์„œ LLM์˜ ์ƒ์„ฑ AI ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ๊ฑฑ์ •์ด ์ ์Šต๋‹ˆ๋‹ค.

    • API ์ง€์›: Ollama์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋ธ์— OpenAI ์Šคํƒ€์ผ API๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด, ๊ธฐ์กด ์•ฑ์— ์‰ฝ๊ฒŒ ์—ฐ๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ชจ๋ธ ์ตœ์ ํ™”: PC ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋ชจ๋ธ ์ตœ์ ํ™”๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
      ์ฆ‰, Ollama๋Š” ๊ฐœ๋ณ„ PC์—์„œ๋„ ๊ฐ•๋ ฅํ•œ LLM์˜ ์ƒ์„ฑํ˜• AI ๊ธฐ๋Šฅ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.



1. Ollama์˜ ์ž‘๋™ ์ˆœ์„œ (์ผ๋ฐ˜์ ์ธ ์˜ˆ์‹œ)


  1. Ollama ์„ค์น˜

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ(Windows, Mac, Linux)์— Ollama๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์„ค์น˜ ๋ฐฉ๋ฒ•์—๋Š” ๊ณต์‹ ์‚ฌ์ดํŠธ(GUI) ๋˜๋Š” ํ„ฐ๋ฏธ๋„(์ปค๋งจ๋“œ๋ผ์ธ) ์„ค์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ชจ๋ธ ๋‚ด๋ ค๋ฐ›๊ธฐ(Pull)

    • ์›ํ•˜๋Š” LLM(์˜ˆ: llama2, mistral ๋“ฑ)์„ ollama pull ๋ชจ๋ธ์ด๋ฆ„ ๋ช…๋ น์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  3. Ollama ์„œ๋ฒ„ ์‹คํ–‰

    • Ollama๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ(์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค)๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ API ์„œ๋ฒ„(REST API)๋„ ํ•จ๊ป˜ ์ผœ์ง‘๋‹ˆ๋‹ค.
  4. LLM ๋ชจ๋ธ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌ

    • Ollama ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ LLM ๋ชจ๋ธ(๋‹ค์šด๋กœ๋“œ๋œ)์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋‹จ์ผ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋ธ์„ ๋™์‹œ์— ๋กœ๋“œ/์–ธ๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  5. API ์š”์ฒญ ์ฒ˜๋ฆฌ

    • ์‚ฌ์šฉ์ž๋Š” curl, Postman, ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: Langchain)์—์„œ Ollama๊ฐ€ ์ œ๊ณตํ•˜๋Š” OpenAI ํ˜ธํ™˜ REST API ์—”๋“œํฌ์ธํŠธ๋กœ ๋Œ€ํ™”/ํ”„๋กฌํ”„ํŠธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    • Ollama๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์•„ ๋ชจ๋ธ์— ์ž…๋ ฅ์„ ์ „๋‹ฌํ•˜๊ณ , ๊ฒฐ๊ณผ(์ƒ์„ฑ ํ…์ŠคํŠธ ๋“ฑ)๋ฅผ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  6. ์‘์šฉ

    • Langchain, ๋กœ์ปฌ ์ปค์Šคํ…€ ์ฑ—๋ด‡, ๊ฐœ๋ฐœ ์ค‘์ธ ์•ฑ ๋“ฑ์—์„œ Ollama API๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.



2. Ollama์™€ Docker์˜ ๊ด€๊ณ„


  • Ollama๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Docker ์ปจํ…Œ์ด๋„ˆ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • Ollama๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๊ณ , Ollama๊ฐ€ ์—ฌ๋Ÿฌ LLM ๋ชจ๋ธ(ํŠนํžˆ ๊ฐ€์ƒ ๋จธ์‹  ๊ฒฉ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ)์„ ๊ฐ๊ฐ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ํ•™์Šตยท์ƒ์„ฑ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค
    .

  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์—ฌ๋Ÿฌ ๋ชจ๋ธ ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์ถฉ๋Œ ์—†์ด ํšจ์œจ์ ์œผ๋กœ LLM์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



3. Ollama ๋‚ด๋ถ€ ๋™์ž‘ ๊ด€๊ณ„๋„ & ์ „์ฒด ๊ตฌ์กฐ


  • ์•„๋ž˜๋Š” Ollama์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ(๊ด€๊ณ„๋„) ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

    • Ollama ์„œ๋ฒ„๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ(ํ˜น์€ Docker)์— ์„ค์น˜๋˜์–ด ์žˆ๊ณ , API๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ๋ฐ ์™ธ๋ถ€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ๊ณผ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚       ์‚ฌ์šฉ์ž/์•ฑ/           โ”‚
โ”‚ (๋ธŒ๋ผ์šฐ์ €, Postman, Langchain)โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
             โ”‚ (REST API ์š”์ฒญ)
             โ–ผ
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ”‚  Ollama ์„œ๋ฒ„    โ”‚
      โ”‚ ----------------โ”‚
      โ”‚ REST API        โ”‚
      โ”‚ LLM ๋งค๋‹ˆ์ €      โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚     (๋ชจ๋ธ ๊ด€๋ฆฌ, ์‹คํ–‰)
 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
 โ”‚             โ”‚                     โ”‚
 โ–ผ             โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚Llama2โ”‚   โ”‚Mistral   โ”‚  ...      โ”‚Gemma     โ”‚
โ”‚๋ชจ๋ธ  โ”‚   โ”‚๋ชจ๋ธ      โ”‚           โ”‚๋ชจ๋ธ      โ”‚
โ””โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜
  โ”‚              โ”‚                       โ”‚
โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
       (์ง์ ‘ ์‹คํ–‰ or Docker ์ปจํ…Œ์ด๋„ˆ)
โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  • Ollama ์„œ๋ฒ„(๋ฐ๋ชฌ)์ด REST API๋ฅผ ์—ด์–ด๋‘ก๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๋Š” API๋ฅผ ํ†ตํ•ด ์š”์ฒญ(ํ”„๋กฌํ”„ํŠธ ๋“ฑ)์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • Ollama๊ฐ€ ์š”์ฒญ์— ๋”ฐ๋ผ ๋‚ด๋ถ€์ ์œผ๋กœ ๋กœ๋“œ๋œ ๋ชจ๋ธ์— ์ž‘์—…์„ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋ธ์€ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด ์‹คํ–‰์ผ ์ˆ˜๋„ ์žˆ๊ณ , ๊ทธ๋ƒฅ OS ํ”„๋กœ์„ธ์Šค์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.



์ฐธ๊ณ : Docker๋กœ Ollama ์‹คํ–‰ ์˜ˆ์‹œ


docker run -d -p 11434:11434 --name ollama ollama/ollama
  • ์œ„์™€ ๊ฐ™์ด Docker์—์„œ Ollama ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด localhost:11434 ํฌํŠธ์—์„œ Ollama OpenAI API์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์š”์•ฝ


  • Ollama๋Š” ๊ฐ•๋ ฅํ•œ LLM์„ ์„ค์น˜/์‹คํ–‰/APIํ™”ํ•˜๋Š” ๋„๊ตฌ

  • ์›ํ•  ๊ฒฝ์šฐ Docker๋กœ ์‹คํ–‰ํ•ด ๊ฒฉ๋ฆฌ์™€ ์œ ์—ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ

  • Ollama REST API๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ์•ฑ(๋ธŒ๋ผ์šฐ์ €, Langchain ๋“ฑ)์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ

  • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋ธ ์„ ํƒ โ†’ ํ”„๋กฌํ”„ํŠธ ์ „๋‹ฌ โ†’ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜์˜ ๊ตฌ์กฐ

  • ์—ฌ๋Ÿฌ LLM ๋ชจ๋ธ์„ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ , ๋กœ์ปฌ์—์„œ ๊ฐœ์ธ์ •๋ณด ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

[์‚ฌ์šฉ์ž/์•ฑ/๋ธŒ๋ผ์šฐ์ €/Langchain]
              |
        (API ์š”์ฒญ)
              v
        [Ollama API ์„œ๋ฒ„]
              |
      โ”Œโ”€โ”€โ”€โ”€โ”€Model Poolโ”€โ”€โ”€โ”€โ”€โ”
      โ”‚ Llama2             โ”‚
      โ”‚ Mistral            โ”‚
      โ”‚ Gemma   ...        โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          (Docker or Direct)



profile
https://velog.io/@corone_hi/posts

0๊ฐœ์˜ ๋Œ“๊ธ€