Skip to content

Latest commit

ย 

History

History
710 lines (603 loc) ยท 34.9 KB

File metadata and controls

710 lines (603 loc) ยท 34.9 KB

Python ยท AI Agent Curriculum

๋ณธ ๊ณผ์ •์˜ ๊ณผ๋ชฉ

  1. Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  2. Python ์ „์ฒ˜๋ฆฌ ๋ฐ ์‹œ๊ฐํ™”
  3. ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹
  4. ์ž์—ฐ์–ด ๋ฐ ์Œ์„ฑ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๋ฐ ๋ชจ๋ธ ๊ฐœ๋ฐœ
  5. ์Œ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ TTS์™€ STT ๋ชจ๋ธ ๊ฐœ๋ฐœ
  6. ๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ์ž์—ฐ์–ด ์ƒ์„ฑ
  7. ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง
  8. LangChain ํ™œ์šฉํ•˜๊ธฐ
  9. RAG ๊ธฐ๋ฐ˜ ์ƒ์„ฑํ˜• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„
  10. LLMOps (์‹ ๊ทœ ์ถ”๊ฐ€)

๋ณธ ๊ณผ์ •์˜ ๋ชฉํ‘œ

  1. ์ด๋ก ์„ ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€๊ธฐ๋ณด๋‹ค โ€œ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€โ€ ์ค‘์‹ฌ, ์‹ค์Šต ์œ„์ฃผ, API ํ™œ์šฉ ์ค‘์‹ฌ
  2. ์ด ๊ณผ์ •์€ AI ๊ฐ€ Teacher ์ด๊ณ , ๊ฐ•์‚ฌ๋Š” ๋ง๊ทธ๋Œ€๋กœ ์‹ค๋ฌด ์ค‘์‹ฌ์˜ Tutor ์ž„.
  3. ์ƒ๊ธฐ 1 ~ 3 ์˜ ๊ณผ๋ชฉ์€ ๊ธฐ๋ณธ PL ์—ฐ์Šต๊ณผ ๋‹จ์–ด ์ดํ•ด ์ค‘์‹ฌ(์ทจ์—… ์ธํ„ฐ๋ทฐ ์‹œ ๋Œ€์‘ ๋ชฉ์ )
  4. Python ์ฝ”๋“œ ๋ฐฑ์—”๋“œ + ๋ฐ”๋‹๋ผ html FE ์˜ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ Serving
  5. ๋ชจ๋ธ ํ˜ธ์ถœ/ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„, ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜, On Prem ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜ ( Docker, k8s ์‘์šฉ )
  6. LangChain/RAG ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด

ํ•™์Šต ๋ฐฉ๋ฒ•

  1. Open AI ๊ธฐ๋ฐ˜ Codex ์—ฐ๋™์œผ๋กœ No Code ์ค‘์‹ฌ์œผ๋กœ py ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ๊ด€๋ จ py ํŒŒ์ผ์„ API ๋กœ ์„œ๋น™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ
  2. ๊ฐ•์‚ฌ, ํ•™์ƒ๊ฐ„ ํ•™์Šต์— ํ•„์š”ํ•œ ๋‚ด์šฉ์„ git ์œผ๋กœ Pull Request ํ•˜์—ฌ ๋ณธ repo ์˜ RAG ์— ๊ตฌ์„ฑ
  3. Slack ์„ ํ†ตํ•œ ํด๋ž˜์Šค ์ฐธ์—ฌ์ž ๊ฐ„์˜ ์ •๋ณด ๊ณต์œ , ์ด 500๊ฐœ๋กœ ๋ถ„๋ฅ˜ํ•œ ๊ฐ ํด๋ž˜์Šค(๋งค ํ•™์Šต ์‹œ๊ฐ„ ๋‹จ์œ„) ๋ณ„ 10~20๋ถ„๊ฐ„ ๊ฐ•์‚ฌ ์ง€๋„, ์ดํ›„ ๊ฐœ์ธ๋ณ„ ์‹ค์Šต์ง„ํ–‰
  4. ํ•™์ƒ ๊ฐ์ž ๊ฐœ์ธ๋ณ„ repo ๋ฅผ 20๊ฐœ ์ด์ƒ ๊ตฌ์„ฑ ํ•˜์—ฌ, ๋นŒ๋“œ์—…, ๊ฐœ์ธ ์ทจ์—… ์šฉ ์ฆ์ ์œผ๋กœ ์‚ฌ์šฉ
  5. ๊ธฐ๋ณธ example ์„ฑ๊ฒฉ์˜ py ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ, ๊ฐ์ž ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด QnA๋ฅผ AI ๊ธฐ๋ฐ˜ ์งˆ์˜, ๊ฒ€์ฆ ๋ฐ md ํŒŒ์ผ ํฌ๋งท์œผ๋กœ ์ •๋ฆฌ
  6. Agent ์œ ์‚ฌ๊ธฐ๋Šฅ, ์ฑ—๋ด‡ ์œ ์‚ฌ๊ธฐ๋Šฅ ํ™œ์šฉ์„ ์œ„ํ•ด fastapi , uvicorn , html ๋กœ ์„œ๋น™ ํ…Œ์ŠคํŠธ

๋ณธ์ธ ๊ฒฝํ—˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต

  1. ๋น„์ „๊ณต, ๋ฏธ์ทจ์—…, PL ๊ฒฝํ—˜ ์—†๋Š” ์ดˆ๊ธ‰์˜ ๊ฒฝ์šฐ ๋ฌธ์„œ ์œ„์ฃผ, Python ์œ„์ฃผ์˜ ์ƒ์„ฑ๊ณผ API ์‚ฌ์šฉ๋ฒ• ์œ„์ฃผ ๋ฌธ์„œ ์ •๋ฆฌ
  2. ์ „๊ณต, ์ทจ์—… ๋ฐ ์‹ค๋ฌด ์œ ๊ฒฝํ—˜์ž๋Š” ์ˆ˜์—… ์™ธ ์œ ์‚ฌ git repo ๋กœ ๊ฐœ๋ณ„ ํ•™์Šต - AI ๋ฐ”์ด๋ธŒ ์ฝ”๋”ฉ ํ˜น์€ No code ์ค‘์‹ฌ์œผ๋กœ ์‹คํ–‰ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ฐœ์ธ๋ณ„ ํ…Œ์ŠคํŠธ
  3. ์˜ˆ๋ฅผ๋“ค์–ด ํ”„๋กฌํ”„ํŠธ๋กœ ์งˆ์˜ํ• ๋•Œ " ๋‚˜๋Š” javascript ๋Š” ์กฐ๊ธˆ ๊ณต๋ถ€ํ•ด์„œ ๋ฌธ๋ฒ•์„ ์•„๋Š”๋ฐ, ํŒŒ์ด์ฌ์€ ์™œ name == "main" ์ด๋ ‡๊ฒŒ ์–ธ๋”๋ฐ”๋ฅผ ๋‘๋ฒˆ ์‚ฌ์šฉํ•ด? " ๋ผ๋Š” ์‹์œผ๋กœ ์งˆ์˜ ๋ฐ ๋‹ต๋ณ€์„ ๋ฉ”๋ชจ
  4. ์˜ˆ๋ฅผ๋“ค์–ด ํ”„๋กฌํ”„ํŠธ๋กœ ์งˆ์˜ํ• ๋•Œ " example1.py ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ƒํ•œ๋ฐ, ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด์šฉ์— ๋งž๊ฒŒ, ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ์‹คํ–‰ํ•˜๊ณ , ๋ชจ๋“  ๋ผ์ธ์— ์ฃผ์„์œผ๋กœ ์ƒ์„ธํžˆ ์„ค๋ช… ๋‹ฌ์•„์ค˜ " ๋ผ๋Š” ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋‚ด์žฌํ™”(๋ณธ์ธ๋งŒ์˜ knowledge์— ๋งž๋„๋ก ๋ฉ”๋ชจ)
  5. ๋ชจ๋“  ๋ฌธ์„œ๋Š” MarkDown md ํฌ๋งท์œผ๋กœ ์ž‘์„ฑ๋˜๋ฉฐ, ๋ชจ๋“  ์‚ฐ์ถœ๋ฌผ์€ git repo ๋กœ ์ €์žฅ, ๋ชจ๋“ˆ ์ž‘์—…์€ docker ๋กœ ๊ตฌ์„ฑ, docker hub ๋กœ ๊ณต์œ 
  6. VS Code ์‚ฌ์šฉ ๋ฐ ๊ฐ git repo ๋งˆ๋‹ค github actions ๋ฅผ ํ†ตํ•œ ํŠธ๋ฆฌ๊ฑฐ ๊ตฌ์„ฑ
  7. ํด๋ผ์šฐ๋“œ๋Š” AWS ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น™, ๋ฐฐํฌ, AWS ML ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ
  8. ์šฐ์ˆ˜ํ•™์ƒ์˜ ํ‰๊ฐ€๋Š” ๊ฐœ์ธ๋ณ„๋กœ ๋งค์ผ ์‚ฐ์ถœ๋ฌผ์— ํ•ด๋Œ€ 10k byte ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์–‘์ ์ธ ์„ฑ์‹ค์„ฑ์œผ๋กœ ํ‰๊ฐ€.

์ตœ์ข… ๋ชฉํ‘œ: Agent/ ํด๋”์˜ ์‹ค์ œ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์—ฐ์Šตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ ์ปค๋ฆฌํ˜๋Ÿผ (540๊ฐœ ๊ณ ์œ  ํ•™์Šต์ฃผ์ œ)

์ฒจ๋ถ€ ์ปค๋ฆฌํ˜๋Ÿผ์˜ ์ •๊ทœ๊ต๊ณผ 520์‹œ๊ฐ„ + LLMOps 20์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ์„ธ๋ถ„ํ™”ํ•œ ๊ต์œก ์ €์žฅ์†Œ์ด๋ฉฐ, 540๊ฐœ ํด๋ž˜์Šค์˜ ํ•™์Šต์ฃผ์ œ๋ฅผ ๋ชจ๋‘ ๊ณ ์œ ํ•˜๊ฒŒ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
class001๋ถ€ํ„ฐ class500์€ ๊ธฐ์กด ์ •๊ทœ๊ต๊ณผ, class501~class520์€ LLMOps ์‹ฌํ™” ๊ณผ์ •, ํ”„๋กœ์ ํŠธ ๊ณผ๋ชฉ์€ ๋ฃจํŠธ์˜ 3๊ฐœ ๋…๋ฆฝ ์•ฑ(VoiceModelBuilder, PersonaLLMResponder, PersonaKnowledgeCustomizer)์œผ๋กœ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค.

1) ํ˜„์žฌ๊นŒ์ง€ ๋ฐ˜์˜๋œ ํ•ต์‹ฌ ์ž‘์—…

  • 540๊ฐœ ์ฐจ์‹œ classXXX.md ์ž๋™ ์ •๋น„ (class001~class520)
  • ๊ต๊ณผ๋ชฉ/ํ•™์Šต์ฃผ์ œ ์šฉ์–ด ํ•ด์„ค(๋ฌธ๋ฒ•, ํ•œ๊ธ€ยทํ•œ์ž, ์˜์–ด, ๊ธฐ์ˆ  ์„ค๋ช…) ๋ฐ˜์˜
  • ๊ฐ ์ฐจ์‹œ๋ณ„ ์„œ๋กœ ๋‹ค๋ฅธ Mermaid Flowchart ์ƒ์„ฑ
  • ๊ฐ ์ฐจ์‹œ๋ณ„ Flow๋ฅผ **PNG ์บก์ฒ˜ ์ด๋ฏธ์ง€(classXXX_flow.png)**๋กœ ์ƒ์„ฑ ๋ฐ md ์ฐธ์กฐ ์—ฐ๊ฒฐ
  • ์˜ˆ์ œ/ํ€ด์ฆˆ/๋Ÿฐ์ฒ˜/์›น ์„œ๋น™ ํŒŒ์ผ ์ฒด๊ณ„ ์ •๋น„

2) ๊ธฐ์ˆ  ์Šคํƒ

  • Language: Python 3.10+ (๊ถŒ์žฅ 3.11)
  • Data/ML: numpy, pandas, matplotlib, scikit-learn
  • API/Serving: fastapi, uvicorn, pydantic
  • AI/LLM: langchain, langchain-community, langgraph
  • Speech: pyttsx3, SpeechRecognition
  • Utility: requests, Pillow
  • Docs: Markdown, Mermaid
  • Dev Tools: VS Code, Git, GitHub, ChatGPT, Codex
  • Optional Infra: Docker, Docker Compose (RAG/LLM ์‹ค์Šต์šฉ)

3) ์ €์žฅ์†Œ ๊ตฌ์กฐ

  • ๊ณผ๋ชฉ๋ณ„ ์ƒ์œ„ ํด๋”(์˜๋ฌธ camelCase) ์•„๋ž˜์— classXXX/ ๋ฐฐ์น˜
  • classXXX/ ๊ธฐ๋ณธ ๊ตฌ์„ฑ(๋ชจ๋“  ๊ณผ๋ชฉ ๊ณตํ†ต)
    • classXXX.md: ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต ๊ฐ€์ด๋“œ
    • classXXX_flow.png: ์ฐจ์‹œ ํ๋ฆ„๋„ PNG
    • classXXX.py: ์‹คํ–‰ ๋Ÿฐ์ฒ˜
    • classXXX_example1.py ~ classXXX_example5.py: ๋‹จ๊ณ„ํ˜• ์‹ค์Šต ์˜ˆ์ œ
    • classXXX_solution.py: ์ •๋‹ต/๋ ˆํผ๋Ÿฐ์Šค ์ฝ”๋“œ
    • classXXX_quiz.html: ํ€ด์ฆˆ
    • instructor_notes.md: ๊ฐ•์‚ฌ์šฉ ๋…ธํŠธ
  • ์›น ์‹ค์Šต ๊ตฌ์„ฑ(pyBasics ์ œ์™ธ ๊ณผ๋ชฉ ๊ณตํ†ต)
    • server.py: FastAPI ๋ฐฑ์—”๋“œ(์˜ˆ์ œ ์‹คํ–‰/์†Œ์Šค ์กฐํšŒ API)
    • client.html: Vanilla JS + Tailwind ๊ธฐ๋ฐ˜ ์‹ค์Šต UI
  • ๋ณด์กฐ/์šด์˜ ํŒŒ์ผ
    • tools/: ์ฝ˜ํ…์ธ  ์žฌ์ƒ์„ฑ/๊ฒ€์ฆ ์Šคํฌ๋ฆฝํŠธ
    • docs/: ์šด์˜ ๊ฐ€์ด๋“œ/์ฑ„์  ๊ฐ€์ด๋“œ/๋ถ€๊ฐ€ ๋ฌธ์„œ
    • curriculum_index.csv: ์ „์ฒด ์ฐจ์‹œ ์ธ๋ฑ์Šค
    • VoiceModelBuilder/, PersonaLLMResponder/, PersonaKnowledgeCustomizer/: ํ”„๋กœ์ ํŠธ ๋…๋ฆฝ ์•ฑ(FastAPI + Vanilla JS + Docker)
    • project/: ํ”„๋กœ์ ํŠธ ์ธ๋ฑ์Šค/๋งค๋‹ˆํŽ˜์ŠคํŠธ

3-1) ๊ณผ๋ชฉ ํด๋” ๋งคํ•‘ ๋ฐ ์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

๊ณผ๋ชฉ๋ช… ํด๋”๋ช…(camelCase) class ๋ฒ”์œ„ ์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ
Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ pyBasics class001~class040 ๋ณ€์ˆ˜/์ž๋ฃŒํ˜•/ํ•จ์ˆ˜ ๊ธฐ์ดˆ ์ดํ›„, ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ดˆ(HTML/CSS/Vanilla JS), Tailwind CSS UI ๋ชจ๋“ˆ ์ œ์ž‘, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ, API ๊ฐœ๋…/HTTP, FastAPIยทUvicorn ์„œ๋ฒ„ ๊ตฌํ˜„, OpenAPI ๋ช…์„ธ ๋ฌธ์„œํ™”๊นŒ์ง€ ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ
Python ์ „์ฒ˜๋ฆฌ ๋ฐ ์‹œ๊ฐํ™” dataVizPrep class041~class080 ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐœ์š”๋ถ€ํ„ฐ NumPy/Pandas, ๋ฐ์ดํ„ฐ ์ •์ œยท๊ฐ€๊ณต, EDA, Matplotlib/Seaborn ์‹œ๊ฐํ™”, ํ†ตํ•ฉ ์‹ค์Šต๊นŒ์ง€ ๋‹จ๊ณ„ํ˜• ๊ตฌ์„ฑ
๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹ mlDeepDive class081~class128 ์ง€๋„ํ•™์Šต, ํšŒ๊ท€/๋ถ„๋ฅ˜, ๋ชจ๋ธ ํ‰๊ฐ€, ํŠน์„ฑ๊ณตํ•™, ๊ณผ์ ํ•ฉ ์ œ์–ด, ์‹ ๊ฒฝ๋ง ๊ธฐ์ดˆ์™€ ์‹ค์ „ ์˜ˆ์ธก ํ”„๋กœ์ ํŠธ
์ž์—ฐ์–ด ๋ฐ ์Œ์„ฑ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ๋ฐ ๋ชจ๋ธ ๊ฐœ๋ฐœ nlpSpeechAI class129~class224 ํ…์ŠคํŠธ ํ† ํฐํ™”/์ž„๋ฒ ๋”ฉ๊ณผ ์Œ์„ฑ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ฉํ•ด NLPยทSpeech ๋ชจ๋ธ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„
์Œ์„ฑ ๋ฐ์ดํ„ฐ ํ™œ์šฉํ•œ TTS์™€ STT ๋ชจ๋ธ ๊ฐœ๋ฐœ speechTtsStt class225~class288 ๋ฐœํ™”/ํ™”์ž ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ, ์˜ค๋””์˜ค ํŠน์ง• ์ถ”์ถœ, STTยทTTS ๋ชจ๋ธ ๊ตฌ์„ฑ/ํ‰๊ฐ€, ํ’ˆ์งˆ ๊ฐœ์„  ๋ฃจํ”„ ์‹ค์Šต
๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ์ž์—ฐ์–ด ์ƒ์„ฑ llmTextGen class289~class352 LLM ๊ตฌ์กฐ/Transformer/ํ† ํฐยท์ปจํ…์ŠคํŠธ, ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์ƒ์„ฑ(temperature/top-k/top-p), APIยท์˜คํ”ˆ๋ชจ๋ธยทํด๋ผ์šฐ๋“œ/๋กœ์ปฌ ์ถ”๋ก , ์ƒ์„ฑ ์ž‘์—…(์š”์•ฝยทQ&Aยท๋ฒˆ์—ญยท๋ฌธ์„œยท์ฝ”๋“œยท์ถ”์ถœ), ํ’ˆ์งˆ ์ œ์–ด(JSONยทํ†คยท๊ธธ์ดยท์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ), ํ•œ๊ณ„/์ฃผ์˜(์‚ฌ์‹ค์„ฑยท์ตœ์‹ ์„ฑยท๋ณด์•ˆยท๊ฒ€์ฆ)๊นŒ์ง€ ํ†ตํ•ฉ ์‹ค์Šต
ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง promptEng class353~class392 ์—ญํ• /๋งฅ๋ฝ/์ถœ๋ ฅํ˜•์‹ ์„ค๊ณ„, ํ…œํ”Œ๋ฆฟํ™”, ํ‰๊ฐ€ ๊ธฐ์ค€ ์ˆ˜๋ฆฝ, ์‹ค์ „ ํ”„๋กฌํ”„ํŠธ ํŠœ๋‹ ์ „๋žต
Langchain ํ™œ์šฉํ•˜๊ธฐ langChainLab class393~class448 ์ฒด์ธ ๊ตฌ์„ฑ, PromptTemplate/OutputParser, ๋ฉ”๋ชจ๋ฆฌ/๋„๊ตฌ ์—ฐ๊ฒฐ, LangGraph ์ƒํƒœ ํ๋ฆ„, LangSmith ์ถ”์  ๊ธฐ๋ฐ˜ ์„œ๋น„์Šคํ˜• ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌํ˜„
RAG(Retrieval-Augmented Generation) ragPipeline class449~class500 ๋ฌธ์„œ ๋กœ๋”ฉ/์ฒญํฌ, ์ž„๋ฒ ๋”ฉยท๋ฒกํ„ฐ๊ฒ€์ƒ‰, ๊ทผ๊ฑฐ ๊ฒฐํ•ฉ ์‘๋‹ต, ์ถœ์ฒ˜ ๊ธฐ๋ฐ˜ ๊ฒ€์ฆ๊นŒ์ง€ RAG ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌํ˜„
LLMOps llmOps class501~class520 LLMOps ๊ฐœ์š”, ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „๊ด€๋ฆฌ, LLM ํ‰๊ฐ€ยทํ’ˆ์งˆ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋งยท๊ด€์ธก์„ฑ, ๋ฐฐํฌ ์ž๋™ํ™”(CI/CDยทBlue-GreenยทCanary)๊นŒ์ง€ Lab ์Šคํƒ€์ผ ์‹ค์Šต
ํ”„๋กœ์ ํŠธ ์•ฑ VoiceModelBuilder, PersonaLLMResponder, PersonaKnowledgeCustomizer ๋…๋ฆฝ ์•ฑ 3์ข… ์Œ์„ฑ ๋ชจ๋ธ ์ƒ์„ฑ, PERSONA LLM ๋‹ต๋ณ€, ์‚ฌ์ „ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋‹ต๋ณ€ ์ปค์Šคํ…€์„ ๊ฐ๊ฐ ๋…๋ฆฝ ์„œ๋น„์Šค๋กœ ์‹ค์Šต

3-1-1) dataVizPrep 7๋‹จ๊ณ„ ๊ตฌ์„ฑ(์š”์ฒญ ๋ฐ˜์˜)

๋‹จ๊ณ„ ํ•ต์‹ฌ ๋‚ด์šฉ class ๋ฒ”์œ„
1. ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐœ์š” ๋ฐ์ดํ„ฐ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค, ์ •ํ˜•/๋น„์ •ํ˜•, CSVยทExcelยทJSON ๊ตฌ์กฐ, ๋ถ„์„์šฉ Python ์ƒํƒœ๊ณ„ class041~044
2. NumPy ๊ธฐ์ดˆ ๋ฐฐ์—ด(Array), list vs ndarray, ๋ฒกํ„ฐํ™”, ์ธ๋ฑ์‹ฑ/์Šฌ๋ผ์ด์‹ฑ, ๊ธฐ์ดˆ ํ†ต๊ณ„ ์—ฐ์‚ฐ class045~048
3. Pandas ๊ธฐ์ดˆ Series/DataFrame, ๋ฐ์ดํ„ฐ ๋กœ๋”ฉยท์ €์žฅ, ํ–‰/์—ด ์„ ํƒ, ์กฐ๊ฑด ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ๊ธฐ์ดˆ ํ†ต๊ณ„ class049~052
4. ๋ฐ์ดํ„ฐ ์ •์ œ ๊ฒฐ์ธก์น˜ ์ฒ˜๋ฆฌ, ์ค‘๋ณต ์ œ๊ฑฐ, ํƒ€์ž… ๋ณ€ํ™˜, ๋ฌธ์ž์—ด ์ •๋ฆฌ, ๋‚ ์งœํ˜• ์ฒ˜๋ฆฌ, ์ปฌ๋Ÿผ๋ช… ์ •๋ฆฌ class053~060
5. ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ํŒŒ์ƒ๋ณ€์ˆ˜, groupby, aggregation, merge/join, pivot table, ๋ฒ”์ฃผํ˜• ์ฒ˜๋ฆฌ class061~068
6. EDA ๋ถ„ํฌ, ํ‰๊ท ยท์ค‘์•™๊ฐ’ยทํ‘œ์ค€ํŽธ์ฐจ, ์ƒ๊ด€๊ด€๊ณ„, ํŒจํ„ด ํƒ์ƒ‰, ๋ฌธ์ œ ์ •์˜ยท๊ฐ€์„ค ์„ค์ • class073~076
7. ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๊ธฐ์ดˆ ์‹œ๊ฐํ™” ์›์น™, Matplotlib ๋ฌธ๋ฒ•, line/bar/scatter/histogram, ํ•œ๊ธ€ ํฐํŠธ, ์ œ๋ชฉยท์ถ•ยท๋ฒ”๋ก€ class069~072

3-1-2) llmTextGen 7๋‹จ๊ณ„ ๊ตฌ์„ฑ(์š”์ฒญ ๋ฐ˜์˜)

ํ•™์Šต ๋ชฉํ‘œ:

  • LLM์˜ ๊ตฌ์กฐ์™€ ๊ฐœ๋… ์ดํ•ด
  • ์ƒ์„ฑํ˜• AI๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹ ์ดํ•ด
  • API ๋˜๋Š” ์˜คํ”ˆ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ์ž์—ฐ์–ด ์ƒ์„ฑ ์‹ค์Šต
  • ์„œ๋น„์Šคํ˜• AI ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์—ญ๋Ÿ‰ ํ™•๋ณด
๋‹จ๊ณ„ ํ•ต์‹ฌ ๋‚ด์šฉ class ๋ฒ”์œ„(์ฃผ์š” ๋ชจ๋“ˆ)
1. LLM ๊ฐœ์š” LLM ์ •์˜, ๊ธฐ์กด NLP ๋Œ€๋น„ ์ฐจ์ด, Transformer, ํ† ํฐ/์ปจํ…์ŠคํŠธ, ์‚ฌ์ „ํ•™์ŠตยทํŒŒ์ธํŠœ๋‹ class289~295 (LLM ๊ฐœ์š”)
2. ์ž์—ฐ์–ด ์ƒ์„ฑ ์›๋ฆฌ ๋‹ค์Œ ํ† ํฐ ์˜ˆ์ธก, ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์ƒ์„ฑ, temperatureยทtop-kยทtop-p, hallucination, ๋ฌธ๋งฅ ์œ ์ง€ class296~308 (ํ† ํฐ/์ปจํ…์ŠคํŠธ ์ดํ•ด, ์ƒ์„ฑ ํŒŒ๋ผ๋ฏธํ„ฐ)
3. LLM ํ™œ์šฉ ๋ฐฉ์‹ API ๊ธฐ๋ฐ˜, ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ, ํด๋ผ์šฐ๋“œ/๋กœ์ปฌ ์ถ”๋ก , ๋น„์šฉยท์„ฑ๋Šฅยท๋ณด์•ˆ ๊ณ ๋ ค class334~346 (๋„๋ฉ”์ธ ์ ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค, API ์—ฐ๋™ ์‹ค์Šต)
4. ์ƒ์„ฑ ์ž‘์—… ์œ ํ˜• ์š”์•ฝ, ์งˆ์˜์‘๋‹ต, ๋ฒˆ์—ญ, ๋ฌธ์„œ ์ž‘์„ฑ, ์ฝ”๋“œ ์ƒ์„ฑ, ๋ถ„๋ฅ˜/์ •๋ณด์ถ”์ถœ class315~320 (์š”์•ฝ/๋ถ„๋ฅ˜/์ถ”์ถœ)
5. ์‹ค์Šต ๊ธฐ๋ณธ ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ, ๋ฌธ์„œ ์š”์•ฝ, ์ด๋ฉ”์ผ/๋ณด๊ณ ์„œ ์ดˆ์•ˆ, ์ฑ—๋ด‡ ์‘๋‹ต, ๊ทœ์น™ ๊ธฐ๋ฐ˜ vs LLM ๋น„๊ต class309~327 (ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ, ๋Œ€ํ™”ํ˜• ์‘๋‹ต ์„ค๊ณ„)
6. ํ’ˆ์งˆ ์ œ์–ด ์ถœ๋ ฅ ํ˜•์‹ ์ œ์–ด, JSON ์‘๋‹ต ๊ฐ•์ œ, ๊ธธ์ด/ํ†ค/์Šคํƒ€์ผ ์ œ์–ด, ์˜ค๋ฅ˜ ์‘๋‹ต ์ฒ˜๋ฆฌ class321327, class341352 (๋Œ€ํ™”ํ˜• ์‘๋‹ต ์„ค๊ณ„, API/Agent ํ†ตํ•ฉ)
7. ํ•œ๊ณ„์™€ ์ฃผ์˜์‚ฌํ•ญ ์‚ฌ์‹ค์„ฑ ๋ฌธ์ œ, ์ตœ์‹ ์„ฑ ํ•œ๊ณ„, ๋ณด์•ˆ/๊ฐœ์ธ์ •๋ณด, ํ”„๋กฌํ”„ํŠธ ๋ฏผ๊ฐ์„ฑ, ์‹ค๋ฌด ๊ฒ€์ฆ ํ•„์š”์„ฑ class328~333 (์•ˆ์ „์„ฑ/ํ™˜๊ฐ ๊ด€๋ฆฌ)

3-1-3) ragPipeline 8๋‹จ๊ณ„ ๊ตฌ์„ฑ(์š”์ฒญ ๋ฐ˜์˜)

ํ•™์Šต ๋ชฉํ‘œ:

  • RAG์˜ ํ•„์š”์„ฑ๊ณผ ๊ตฌ์กฐ ์ดํ•ด
  • ์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ LLM ๋‹ต๋ณ€ ํ’ˆ์งˆ ๊ฐœ์„ 
  • ๋ฒกํ„ฐDB, ์ž„๋ฒ ๋”ฉ, ๊ฒ€์ƒ‰ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐœ๋… ์Šต๋“
  • ์‚ฌ๋‚ด ๋ฌธ์„œ Q&A ์‹œ์Šคํ…œ ๊ตฌํ˜„ ์—ญ๋Ÿ‰ ํ™•๋ณด
๋‹จ๊ณ„ ํ•ต์‹ฌ ๋‚ด์šฉ class ๋ฒ”์œ„(์ฃผ์š” ๋ชจ๋“ˆ)
1. RAG ๊ฐœ์š” ์™œ RAG๊ฐ€ ํ•„์š”ํ•œ๊ฐ€, LLM ๋‹จ๋… ํ•œ๊ณ„, ์ตœ์‹ /์‚ฌ๋‚ด ์ •๋ณด ํ™œ์šฉ, ๊ฒ€์ƒ‰+์ƒ์„ฑ ๊ฒฐํ•ฉ ๊ตฌ์กฐ class449~454 (RAG ๊ฐœ์š”)
2. RAG ์ „์ฒด ๊ตฌ์กฐ ๋ฌธ์„œ ์ˆ˜์ง‘, ๋ฌธ์„œ ๋ถ„ํ• , ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ, ๋ฒกํ„ฐ ์ €์žฅ, ๊ฒ€์ƒ‰, ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…, ๋‹ต๋ณ€ ์ƒ์„ฑ class455~459 (๋ฌธ์„œ ์ˆ˜์ง‘ ์ „๋žต)
3. ์ž„๋ฒ ๋”ฉ ์ดํ•ด ์ž„๋ฒ ๋”ฉ ๊ฐœ๋…, ๋ฌธ์žฅ ์˜๋ฏธ ๋ฒกํ„ฐ, ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰, cosine similarity, ๋ชจ๋ธ ์„ ํƒ ๊ธฐ์ค€ class465~469 (์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ)
4. ๋ฌธ์„œ ์ „์ฒ˜๋ฆฌ์™€ Chunking PDF/TXT/HTML/CSV ์ฒ˜๋ฆฌ, ๋ฌธ์„œ ๊ตฌ์กฐ ๋ณด์กด, chunk ํฌ๊ธฐ/overlap, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ class460~464 (๋ฌธ์„œ ์ฒญํฌ ์„ค๊ณ„)
5. ๋ฒกํ„ฐDB์™€ ๊ฒ€์ƒ‰ Chroma/FAISS/Qdrant ๊ฐœ์š”, ์ธ๋ฑ์‹ฑ, Top-K ๊ฒ€์ƒ‰, reranking, ๊ฒ€์ƒ‰ ์‹คํŒจ ๋ถ„์„ class470~480 (๋ฒกํ„ฐDB ๊ธฐ์ดˆ, ๊ฒ€์ƒ‰ ํ’ˆ์งˆ ๊ฐœ์„ )
6. LangChain๊ณผ RAG ์—ฐ๊ฒฐ Retriever ๊ตฌ์„ฑ, Prompt ๋ฌธ๋งฅ ์ฃผ์ž…, ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ๋‹ต๋ณ€ ์ƒ์„ฑ, source ๋ฐ˜ํ™˜, hallucination ๊ฐ์†Œ class481~490 (ํ”„๋กฌํ”„ํŠธ ๊ฒฐํ•ฉ, ์‘๋‹ต ๊ฒ€์ฆ/์ถœ์ฒ˜ํ™”)
7. ํ‰๊ฐ€์™€ ๊ฐœ์„  ๊ฒ€์ƒ‰ ์ •ํ™•๋„, ๋‹ต๋ณ€ ์ •ํ™•๋„, chunking ๊ฐœ์„ , ํ”„๋กฌํ”„ํŠธ ํŠœ๋‹, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ class491~495 (ํ‰๊ฐ€ ์ง€ํ‘œ ์„ค๊ณ„)
8. ์‹ค์Šต ์‚ฌ๋‚ด ๋ฌธ์„œ ์งˆ์˜์‘๋‹ต, FAQ ์ฑ—๋ด‡, PDF ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ, ์ถœ์ฒ˜ ํฌํ•จ ๋‹ต๋ณ€ ์ƒ์„ฑ class496~500 (Agent ์‹œ์Šคํ…œ ํ†ตํ•ฉ ๊ตฌํ˜„)

3-1-4) llmOps 5๋‹จ๊ณ„ ๊ตฌ์„ฑ (์‹ ๊ทœ)

ํ•™์Šต ๋ชฉํ‘œ:

  • LLMOps ๊ฐœ๋…๊ณผ DevOps/MLOps์™€์˜ ์ฐจ์ด ์ดํ•ด
  • ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „๊ด€๋ฆฌยทA/B ํ…Œ์ŠคํŠธ ์—ญ๋Ÿ‰ ์Šต๋“
  • LLM ์„œ๋น„์Šค ํ’ˆ์งˆ ํ‰๊ฐ€ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ
  • Prometheus/Grafana ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋งยท๊ด€์ธก์„ฑ ์‹ค์Šต
  • CI/CDยทBlue-GreenยทCanary ๊ธฐ๋ฐ˜ LLM ๋ฐฐํฌ ์ž๋™ํ™” ๊ตฌํ˜„
๋‹จ๊ณ„ ํ•ต์‹ฌ ๋‚ด์šฉ class ๋ฒ”์œ„
1. LLMOps ๊ฐœ์š” LLMOps ์ •์˜, DevOpsยทMLOps์™€์˜ ์ฐจ์ด, ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ(ํ”„๋กฌํ”„ํŠธยทํ‰๊ฐ€ยท๋ชจ๋‹ˆํ„ฐ๋งยท๊ฐ€๋“œ๋ ˆ์ผ), ๋“œ๋ฆฌํ”„ํŠธ ๊ด€๋ฆฌ class501~504
2. ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „๊ด€๋ฆฌ, ํ…œํ”Œ๋ฆฟํ™”, A/B ํ…Œ์ŠคํŠธ, Chain-of-Thought, ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ๋ฐฉ์–ด class505~508
3. LLM ํ‰๊ฐ€์™€ ํ’ˆ์งˆ BLEU/Faithfulness/Answer Relevance, ์ž๋™ ํ‰๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ, LLM-as-Judge, ์ง€์†์  ํ’ˆ์งˆ ๊ด€๋ฆฌ class509~512
4. LLM ๋ชจ๋‹ˆํ„ฐ๋ง PrometheusยทGrafana ๋ฉ”ํŠธ๋ฆญ, ํ† ํฐยท์ง€์—ฐยท์˜ค๋ฅ˜์œจ ์ถ”์ , ์ด์ƒ ํƒ์ง€, SLO ์„ค์ •, Circuit Breaker class513~516
5. LLM ๋ฐฐํฌ ์ž๋™ํ™” CI/CD ํŒŒ์ดํ”„๋ผ์ธ, Docker ํŒจํ‚ค์ง•, K8s HPA, Blue-Green/Canary ๋ฐฐํฌ, IaC, Secret ๊ด€๋ฆฌ class517~520

3-2) ์‹ค๋ฌด ๋ฐฐํฌ ํŠธ๋ž™ (OnPrem + AWS + K8s/EKS)

ํŠธ๋ž™ class ๋ฒ”์œ„ ํ•ต์‹ฌ ํ•™์Šต ํ•ญ๋ชฉ ์šด์˜/๋ฐฐํฌ ๊ฒฐ๊ณผ๋ฌผ
๋กœ์ปฌ/OnPrem ๊ฐœ๋ฐœ ํ‘œ์ค€ํ™” class001~class128 ๊ฐ€์ƒํ™˜๊ฒฝ, ์˜์กด์„ฑ ์ž ๊ธˆ, Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ, API ๊ธฐ๋ณธ ์„œ๋น™ OnPrem ์„œ๋ฒ„์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ Python ์„œ๋น„์Šค
ML ํ•™์Šตยท์ถ”๋ก  ๋ถ„๋ฆฌ class081~class224 ๋ชจ๋ธ ํ•™์Šต ํŒŒ์ดํ”„๋ผ์ธ, ์ถ”๋ก  API, ๋ฐฐ์น˜/์‹ค์‹œ๊ฐ„ ์ถ”๋ก  ์ „๋žต ํ•™์Šต ์žก + ์ถ”๋ก  ์„œ๋ฒ„ ๋ถ„๋ฆฌ ๋ฐฐํฌ
LLM/Prompt ์„œ๋น„์Šคํ™” class289~class448 ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(LangChain ๋“ฑ) ํ†ตํ•ฉ, ์•ˆ์ „ํ•œ ์‘๋‹ต ์ •์ฑ…, ๊ด€์ธก์„ฑ LLM ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ API ์šด์˜
ํ”„๋กœ์ ํŠธ ํ†ตํ•ฉ ์šด์˜ VoiceModelBuilder / PersonaLLMResponder / PersonaKnowledgeCustomizer ์Œ์„ฑ ๋ชจ๋ธ ์ƒ์„ฑ, PERSONA ๋‹ต๋ณ€, ์‚ฌ์ „ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์ปค์Šคํ…€ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋…๋ฆฝ ๊ฐœ๋ฐœ ํ›„ ํ†ตํ•ฉ ์šด์˜ ์Œ์„ฑ AI ์„œ๋น„์Šค ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌ ์„ค๊ณ„ํ•˜๊ณ  ์šด์˜ ์ž๋™ํ™”๊นŒ์ง€ ์—ฐ๊ฒฐ

3-2-1) ํ”„๋กœ์ ํŠธ ๊ณผ๋ชฉ๊ณผ ๋ณด๊ณ ์„œ ์ ‘๋ชฉ

  • ๊ธฐ์ค€ ๋ฌธ์„œ: OPS๊ฐœ๋….md
  • VoiceModelBuilder: ๊ฐœ์ธ ๋งž์ถค ์ฝ”์นญ ์Œ์„ฑ ๋ชจ๋ธ ๊ตฌ์ถ•(ํ”„๋กœํ•„/ํ•™์Šต ํ’ˆ์งˆ/ํ•ฉ์„ฑ ํ”„๋ฆฌ๋ทฐ)
  • PersonaLLMResponder: ๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ ๊ธฐ๋ฐ˜ PERSONA ๋‹ต๋ณ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„(ํŽ˜๋ฅด์†Œ๋‚˜ ๊ทœ์น™/์‘๋‹ต ์ƒ์„ฑ)
  • PersonaKnowledgeCustomizer: ์‚ฌ์ „ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ PERSO ๋‹ต๋ณ€ ์ปค์Šคํ…€(์ง€์‹ ์—…์„œํŠธ/๊ฒ€์ƒ‰/๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜ ์‘๋‹ต)

3-3) ๊ณต๊ณต ๋ฐ์ดํ„ฐยทAPI Hub ์—ฐ๊ณ„ ํ•™์Šต

  • ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ(data.go.kr) OpenAPI: ๊ตํ†ต/ํ™˜๊ฒฝ/์ธ๊ตฌ ๋“ฑ API ์ˆ˜์ง‘, ์ „์ฒ˜๋ฆฌ, ์‹œ๊ฐํ™”, ์˜ˆ์ธก ์‹ค์Šต
  • AI Hub(ํ•œ๊ตญ์ง€๋Šฅ์ •๋ณด์‚ฌํšŒ์ง„ํฅ์›) ๋ฐ์ดํ„ฐ์…‹: ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ/์Œ์„ฑ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ NLPยทSTTยทTTS ๋ชจ๋ธ ์‹ค์Šต
  • ๊ถŒ์žฅ ๋ฐฉ์‹: ์ˆ˜์ง‘๊ธฐ(๋ฐฐ์น˜) + ์ถ”๋ก  API(์‹ค์‹œ๊ฐ„) + ๋Œ€์‹œ๋ณด๋“œ(๋ชจ๋‹ˆํ„ฐ๋ง)๋กœ ๊ตฌ์„ฑํ•ด OnPrem/AWS ๋ชจ๋‘ ๋ฐฐํฌ

3-4) ML/DL ์‹ค์‚ฌ๋ก€ Docker ์ด๋ฏธ์ง€ ํ™œ์šฉ

์šฉ๋„ ๊ถŒ์žฅ ์ด๋ฏธ์ง€ ๋น ๋ฅธ ์‹œ์ž‘ ๋ช…๋ น ํ•™์Šต ํฌ์ธํŠธ
PyTorch ํ•™์Šต ํ™˜๊ฒฝ pytorch/pytorch docker pull pytorch/pytorch CUDA/CPU ํƒœ๊ทธ ์„ ํƒ, ์‹คํ—˜ ์žฌํ˜„์„ฑ ํ™•๋ณด
TensorFlow ๋ชจ๋ธ ์„œ๋น™ tensorflow/serving docker run -p 8501:8501 tensorflow/serving REST/gRPC ์ถ”๋ก  ์—”๋“œํฌ์ธํŠธ ์šด์˜
๊ณ ์„ฑ๋Šฅ ์ถ”๋ก  ์„œ๋ฒ„ NVIDIA Triton (NGC) docker run --gpus=all ... nvcr.io/nvidia/tritonserver:<tag> ๋‹ค์ค‘ ํ”„๋ ˆ์ž„์›Œํฌ ์ถ”๋ก  ํ†ตํ•ฉ, GPU ์ตœ์ ํ™”
์‹คํ—˜ ์ถ”์ /๋ชจ๋ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ghcr.io/mlflow/mlflow docker pull ghcr.io/mlflow/mlflow ์‹คํ—˜/์•„ํ‹ฐํŒฉํŠธ/๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ
์›Œํฌํ”Œ๋กœ์šฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ apache/airflow docker compose up (๊ณต์‹ quick-start) ํ•™์Šต/๋ฐฐ์น˜ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”

3-5) MLOps + AIOps ์šด์˜ ํ•™์Šต ์ถ•

  1. MLOps: ๋ฐ์ดํ„ฐ/์ฝ”๋“œ/๋ชจ๋ธ ๋ฒ„์ „๊ด€๋ฆฌ, ํ•™์Šต-๊ฒ€์ฆ-๋ฐฐํฌ ์ž๋™ํ™”, ๋ชจ๋ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์šด์˜
  2. Model Serving: FastAPI + TF Serving/Triton/KServe ์ค‘ ์šฉ๋„๋ณ„ ์„ ํƒ
  3. Observability(AIOps): Prometheus ๋ฉ”ํŠธ๋ฆญ, Grafana ๋Œ€์‹œ๋ณด๋“œ, ๋กœ๊ทธ/์•Œ๋žŒ ๊ธฐ๋ฐ˜ ์ด์ƒํƒ์ง€
  4. Reliability: ๋กค๋ฐฑ ๊ฐ€๋Šฅํ•œ ๋ฐฐํฌ ์ „๋žต(Blue-Green/Canary), SLOยท์—๋Ÿฌ๋ฒ„์ง“ ๊ธฐ๋ฐ˜ ์šด์˜
  5. Runbook: ์žฅ์•  ์žฌํ˜„ ์ ˆ์ฐจ, ๋ณต๊ตฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ, ์šด์˜ ์ธ์ˆ˜ ๋ฌธ์„œํ™”

3-5-1) DevOps / MLOps / AIOps ๊ตฌ๋ถ„

๊ตฌ๋ถ„ DevOps MLOps AIOps
๋ชฉ์  ๊ฐœ๋ฐœ(Dev)๊ณผ ์šด์˜(Ops)์„ ํ†ตํ•ฉํ•ด ๋ฐฐํฌ ์†๋„์™€ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ ๋ชจ๋ธ์˜ ํ•™์Šต-๋ฐฐํฌ-์šด์˜ ์ „ ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ณ  ํ’ˆ์งˆ ์œ ์ง€ AI/ML๋กœ ์šด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ์žฅ์•  ์˜ˆ์ธก/ํƒ์ง€/์ž๋™ ๋Œ€์‘
๋Œ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ, ์ธํ”„๋ผ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ์ดํ„ฐ์…‹, ํ”ผ์ฒ˜, ํ•™์Šต ์ฝ”๋“œ, ๋ชจ๋ธ ์•„ํ‹ฐํŒฉํŠธ, ์ถ”๋ก  ์„œ๋น„์Šค ๋กœ๊ทธ, ๋ฉ”ํŠธ๋ฆญ, ํŠธ๋ ˆ์ด์Šค, ์•Œ๋ฆผ ์ด๋ฒคํŠธ ๋“ฑ ์šด์˜ ๊ด€์ธก ๋ฐ์ดํ„ฐ
ํ•ต์‹ฌ ํ™œ๋™ ์ž๋™ ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ/๋ฐฐํฌ, IaC, ๋ชจ๋‹ˆํ„ฐ๋ง, ์žฅ์•  ๋Œ€์‘ ๋ฐ์ดํ„ฐ/๋ชจ๋ธ ๋ฒ„์ „๊ด€๋ฆฌ, ์‹คํ—˜ ์ถ”์ , ๋ชจ๋ธ ๋ฐฐํฌ, ๋“œ๋ฆฌํ”„ํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง ์ด์ƒ ํƒ์ง€, ์ด๋ฒคํŠธ ์ƒ๊ด€๋ถ„์„, ์›์ธ ๋ถ„์„(RCA), ์ž๋™ ๋ณต๊ตฌ
๋Œ€ํ‘œ ๋„๊ตฌ GitHub Actions, Jenkins, Docker, Kubernetes, Terraform MLflow, Kubeflow, Airflow, DVC, SageMaker Datadog, Dynatrace, New Relic, Splunk
  • ํ•œ ์ค„ ์š”์•ฝ
    • DevOps: ์†Œํ”„ํŠธ์›จ์–ด ์ „๋‹ฌ ํ”„๋กœ์„ธ์Šค ์ž๋™ํ™”
    • MLOps: ๋ชจ๋ธ ์ƒ๋ช…์ฃผ๊ธฐ(ํ•™์Šต-๋ฐฐํฌ-์šด์˜) ์ž๋™ํ™”
    • AIOps: ์šด์˜ ์ž์ฒด๋ฅผ AI๋กœ ์ง€๋Šฅํ™”ํ•ด ์žฅ์•  ๋Œ€์‘ ์ž๋™ํ™”

3-6) Docker ์ด๋ฏธ์ง€ ๋ชฉ๋ก ๋ฐ ์บก์ฒ˜ ํ‘œ์ค€

  • ์ˆ˜์—…์—์„œ ์‚ฌ์šฉํ•˜๋Š” Docker ์ด๋ฏธ์ง€ ๋ชฉ๋ก: ๋„์ปค๋ชฉ๋ก.md
  • ํ™”๋ฉด ์บก์ฒ˜ ํ‘œ์ค€: mcr.microsoft.com ๊ณ„์—ด Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์บก์ฒ˜ ์ˆ˜ํ–‰

4) ์‚ฌ์ „ ์ค€๋น„ (ํ•„์ˆ˜ ์„ค์น˜)

4.0 ํ•„์ˆ˜ ํ”Œ๋žซํผ ๊ฐ€์ž… ๋ชฉ๋ก (์ˆ˜์—… ์‹œ์ž‘ ์ „)

๊ตฌ๋ถ„ ํ”Œ๋žซํผ ๊ฐ€์ž…/์ค€๋น„ ๋ชฉ์  ํ•„์ˆ˜ ์—ฌ๋ถ€
์ฝ”๋“œ/ํ˜•์ƒ๊ด€๋ฆฌ GitHub (github.com) ์ €์žฅ์†Œ ์ ‘๊ทผ, ๊ณผ์ œ ์ œ์ถœ, ํ˜‘์—… PR ํ•„์ˆ˜
AI ์–ด์‹œ์Šคํ„ดํŠธ ChatGPT (chatgpt.com) ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ๋ฌธ์„œ ์ •๋ฆฌ, ์‹ค์Šต ๋ณด์กฐ ํ•„์ˆ˜
ํด๋ผ์šฐ๋“œ AWS (aws.amazon.com) S3/ECR/EKS ๋“ฑ ํด๋ผ์šฐ๋“œ ์‹ค์Šต ํ•„์ˆ˜
๊ณต๊ณต๋ฐ์ดํ„ฐ ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ (data.go.kr) OpenAPI ํ‚ค ๋ฐœ๊ธ‰, ์‹ค๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์‹ค์Šต ๊ถŒ์žฅ(๊ฐ•๋ ฅ)
AI ๋ฐ์ดํ„ฐ AI Hub (aihub.or.kr) ํ•œ๊ตญ์–ด/์Œ์„ฑ ๋ฐ์ดํ„ฐ์…‹ ์‹ค์Šต ๊ถŒ์žฅ(๊ฐ•๋ ฅ)
์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ Docker Hub (hub.docker.com) ML/DL ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ pull/push ๊ถŒ์žฅ
MLOps ๋ณด์กฐ Weights & Biases (wandb.ai) ๋˜๋Š” MLflow ์‹คํ—˜ ์ถ”์ /๋ชจ๋ธ ๊ด€๋ฆฌ ๊ถŒ์žฅ

4.0-1 ํ•„์ˆ˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜ ๋ชฉ๋ก (์ˆ˜์—… ์‹œ์ž‘ ์ „)

๊ตฌ๋ถ„ ์†Œํ”„ํŠธ์›จ์–ด ๊ถŒ์žฅ ๋ฒ„์ „ ์šฉ๋„
๋Ÿฐํƒ€์ž„ Python 3.11.x ์‹ค์Šต ์ฝ”๋“œ ์‹คํ–‰
ํŽธ์ง‘๊ธฐ VS Code ์ตœ์‹  ์•ˆ์ •ํ™” ์ฝ”๋“œ ์ž‘์„ฑ/๋””๋ฒ„๊น…
๋ฒ„์ „๊ด€๋ฆฌ Git ์ตœ์‹  ์•ˆ์ •ํ™” ์ปค๋ฐ‹/๋ธŒ๋žœ์น˜/ํ˜‘์—…
ํŒจํ‚ค์ง€๊ด€๋ฆฌ pip + venv Python ํฌํ•จ ์˜์กด์„ฑ/๊ฐ€์ƒํ™˜๊ฒฝ ๋ถ„๋ฆฌ
์ปจํ…Œ์ด๋„ˆ Docker Desktop ๋˜๋Š” Docker Engine ์ตœ์‹  ์•ˆ์ •ํ™” ์ด๋ฏธ์ง€ ๋นŒ๋“œ/์„œ๋น™ ์‹ค์Šต
API ํ…Œ์ŠคํŠธ Postman ๋˜๋Š” Insomnia ์ตœ์‹  ์•ˆ์ •ํ™” API ํ˜ธ์ถœ/๊ฒ€์ฆ
ํด๋Ÿฌ์Šคํ„ฐ ๋„๊ตฌ kubectl, helm EKS ํ˜ธํ™˜ ๋ฒ„์ „ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฐฐํฌ
AWS CLI awscli v2 ์ตœ์‹  ์•ˆ์ •ํ™” AWS ๋ฆฌ์†Œ์Šค ์ œ์–ด

4.0-2 ๊ธฐ์ˆ ์Šคํƒ ์ƒ์„ธ (๊ฐœ๋ฐœ์ž ์‹ค๋ฌด ๊ธฐ์ค€)

์˜์—ญ ๊ธฐ์ˆ ์Šคํƒ ์ˆ˜์—… ๋‚ด ์‚ฌ์šฉ ๋งฅ๋ฝ
Backend/API FastAPI, Uvicorn, Pydantic Agent API ์„œ๋ฒ„/๋ช…์„ธ(OpenAPI)
Data/ML NumPy, Pandas, scikit-learn, PyTorch, TensorFlow ์ „์ฒ˜๋ฆฌ/ํ•™์Šต/์ถ”๋ก 
LLM/RAG LangChain, Vector DB(Chroma ๋“ฑ), Prompt Engineering Agent ์งˆ์˜์‘๋‹ต ํŒŒ์ดํ”„๋ผ์ธ
Frontend HTML, Tailwind CSS, Vanilla JS API ๊ฒ€์ฆ์šฉ FE ๋ชจ๋“ˆ
MLOps MLflow, Airflow, Docker, Kubernetes, EKS ์‹คํ—˜/๋ฐฐํฌ/์šด์˜ ์ž๋™ํ™”
AIOps/Observability Prometheus, Grafana, CloudWatch, ๋กœ๊ทธ/์•Œ๋žŒ ์ด์ƒํƒ์ง€/์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง
Infra as Code(์„ ํƒ) Terraform ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ ๊ตฌ์„ฑ

4.1 VS Code ์„ค์น˜

  1. https://code.visualstudio.com ์ ‘์†
  2. ์šด์˜์ฒด์ œ๋ณ„ ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ/์„ค์น˜
  3. ์‹คํ–‰ ํ›„ File > Open Folder๋กœ ์ €์žฅ์†Œ ์—ด๊ธฐ

4.2 GitHub ๊ฐ€์ž…

  1. https://github.com ๊ฐ€์ž…
  2. ์ด๋ฉ”์ผ ์ธ์ฆ
  3. ํ”„๋กœํ•„ ๊ธฐ๋ณธ ์„ค์ •(์‚ฌ์šฉ์ž๋ช…/์ด๋ฉ”์ผ)

4.3 ChatGPT ๊ฐ€์ž…

  1. https://chatgpt.com ์ ‘์†
  2. ์ด๋ฉ”์ผ ๋˜๋Š” ์†Œ์…œ ๊ณ„์ •์œผ๋กœ ๊ฐ€์ž…
  3. ๊ณ„์ • ์ธ์ฆ ์™„๋ฃŒ ํ›„ ๊ธฐ๋ณธ ํ”„๋กœํ•„ ์„ค์ •
  4. ํ”„๋กœ์ ํŠธ ํ•™์Šต์šฉ ๋Œ€ํ™” ํด๋”(์˜ˆ: Python-AI-Agent-Class)๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌ

4.4 Git ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

  1. https://git-scm.com/downloads ์„ค์น˜
  2. ๋ฒ„์ „ ํ™•์ธ
git --version
  1. ์‚ฌ์šฉ์ž ์ •๋ณด ๋“ฑ๋ก
git config --global user.name "YOUR_NAME"
git config --global user.email "[email protected]"

4.5 Python ์„ค์น˜

  1. https://www.python.org/downloads ์„ค์น˜
  2. Windows ์„ค์น˜ ์‹œ Add Python to PATH ์ฒดํฌ
  3. ๋ฒ„์ „ ํ™•์ธ
python --version

4.6 Docker Desktop ์„ค์น˜ (์„ ํƒ, RAG/LLM ์‹ค์Šต์šฉ)

  1. https://www.docker.com/products/docker-desktop ์„ค์น˜
  2. ์‹คํ–‰ ํ›„ ๋ฒ„์ „ ํ™•์ธ
docker --version
docker compose version

4.7 Codex ์—ฐ๋™ ๋ฐฉ๋ฒ•

์•„๋ž˜๋Š” ์ผ๋ฐ˜์ ์ธ ์—ฐ๋™ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ IDE/ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฐํฌ ํ˜•ํƒœ์— ๋”ฐ๋ผ ๋ฉ”๋‰ด๋ช…์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. VS Code์—์„œ Codex ๊ด€๋ จ ํ™•์žฅ(๋˜๋Š” ์—์ด์ „ํŠธ ํ†ตํ•ฉ ๊ธฐ๋Šฅ) ์„ค์น˜
  2. ํ™•์žฅ ์„ค์ •์—์„œ Sign in ๋˜๋Š” API Key ์ž…๋ ฅ ๋ฐฉ์‹ ์„ ํƒ
  3. OpenAI ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ฑฐ๋‚˜ API Key ๋“ฑ๋ก
  4. Workspace(ํ˜„์žฌ ์ €์žฅ์†Œ) ๊ถŒํ•œ/๋ชจ๋ธ ์„ค์ • ํ™•์ธ
  5. ํ…Œ์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋กœ ์—ฐ๊ฒฐ ์ƒํƒœ ์ ๊ฒ€

API Key ์‚ฌ์šฉ ์‹œ(์„ ํƒ):

# Windows PowerShell
$env:OPENAI_API_KEY="YOUR_KEY"

# Linux/macOS
export OPENAI_API_KEY="YOUR_KEY"

4.8 WSL(Windows Subsystem for Linux) ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  1. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ PowerShell ์‹คํ–‰
  2. WSL ์„ค์น˜
wsl --install
  1. ์žฌ๋ถ€ํŒ… ํ›„ ์„ค์น˜ ์ƒํƒœ ํ™•์ธ
wsl --status
wsl -l -v

4.9 Ubuntu ๋ฐฐํฌํŒ ์„ค์น˜ (WSL)

  1. Microsoft Store์—์„œ Ubuntu ์„ค์น˜(๊ถŒ์žฅ: Ubuntu 22.04 LTS ์ด์ƒ)
  2. ๋˜๋Š” PowerShell์—์„œ ์ง์ ‘ ์„ค์น˜
wsl --list --online
wsl --install -d Ubuntu
  1. ์ตœ์ดˆ ์‹คํ–‰ ํ›„ Linux ์‚ฌ์šฉ์ž ๊ณ„์ • ์ƒ์„ฑ
  2. Ubuntu ๋ฒ„์ „ ํ™•์ธ
lsb_release -a
uname -a

4.10 WSL Ubuntu ๊ธฐ๋ฐ˜ Docker ์„ค์น˜ ๋ฐ ํ™•์ธ

์•„๋ž˜๋Š” Docker Engine์„ Ubuntu(WSL) ๋‚ด๋ถ€์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

  1. ํŒจํ‚ค์ง€ ์ธ๋ฑ์Šค ๊ฐฑ์‹  ๋ฐ ํ•„์ˆ˜ ๋„๊ตฌ ์„ค์น˜
sudo apt update
sudo apt install -y ca-certificates curl gnupg
  1. Docker ๊ณต์‹ GPG ํ‚ค/์ €์žฅ์†Œ ๋“ฑ๋ก
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Docker Engine ์„ค์น˜
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. ๊ถŒํ•œ ์„ค์ •(์žฌ๋กœ๊ทธ์ธ ํ•„์š”)
sudo usermod -aG docker $USER
newgrp docker
  1. ์„ค์น˜ ํ™•์ธ ๋ช…๋ น
docker --version
docker compose version
docker run hello-world

4.11 AWS ๊ฐ€์ž… ๋ฐ ๊ธฐ๋ณธ ์„ค์ • (ํ•„์ˆ˜)

  1. https://aws.amazon.com/ko/ ์—์„œ ๊ณ„์ • ์ƒ์„ฑ
  2. IAM ์‚ฌ์šฉ์ž/๊ทธ๋ฃน ์ƒ์„ฑ, MFA ์„ค์ •, ์•ก์„ธ์Šค ํ‚ค ๋ฐœ๊ธ‰(๋ฃจํŠธ ๊ณ„์ • ํ‚ค ์‚ฌ์šฉ ๊ธˆ์ง€)
  3. aws configure๋กœ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์—ฐ๊ฒฐ
aws configure
aws sts get-caller-identity

4.12 AWS ML ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋ฐ ์„œ๋น™ ํ•™์Šต

  1. ๋ฐ์ดํ„ฐ ์ €์žฅ: Amazon S3
  2. ๋ชจ๋ธ ํ•™์Šต/์‹คํ—˜: SageMaker ๋˜๋Š” EC2 ๊ธฐ๋ฐ˜ ํ•™์Šต ๋…ธ๋“œ
  3. ์ถ”๋ก  API: ECS/Fargate, EKS, Lambda + API Gateway ํŒจํ„ด ๋น„๊ต
  4. ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง: CloudWatch ๋กœ๊ทธ/๋ฉ”ํŠธ๋ฆญ/์•Œ๋žŒ

4.13 Python ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ๋ฐฐํฌ

  • ์˜ˆ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: fastapi, uvicorn, pydantic, langchain, langgraph
  • ๊ณตํ†ต ํŒจํ„ด
  1. requirements.txt ๊ณ ์ •
  2. Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ
  3. OnPrem ๋˜๋Š” AWS(ECS/EKS) ๋ฐฐํฌ
  4. ํ—ฌ์Šค์ฒดํฌ/๋กœ๊ทธ/์•Œ๋žŒ ์„ค์ •

4.14 Kubernetes/EKS ์šด์˜ ํ•„์ˆ˜ ํ•ญ๋ชฉ

  1. K8s ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค: Deployment, Service, ConfigMap, Secret, HPA
  2. EKS ์‹ค์Šต: ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ, ๋…ธ๋“œ๊ทธ๋ฃน ๊ตฌ์„ฑ, Ingress/NLB ์—ฐ๊ฒฐ
  3. ๋ฐฐํฌ ์ „๋žต: Rolling Update, Blue-Green, Canary
  4. ์žฅ์•  ๋Œ€์‘: Pod ์žฌ์‹œ์ž‘ ์ •์ฑ…, ๋ฆฌ์†Œ์Šค ์ œํ•œ, ์˜คํ† ์Šค์ผ€์ผ๋ง

5) VS Code ๊ถŒ์žฅ ํ™•์žฅํŒฉ

  • Python (ms-python.python)
  • Pylance (ms-python.vscode-pylance)
  • Jupyter (ms-toolsai.jupyter) - ์„ ํƒ
  • Markdown All in One (yzhang.markdown-all-in-one)
  • Markdown Preview Mermaid Support (bierner.markdown-mermaid)
  • Live Server (ritwickdey.LiveServer) - ํ€ด์ฆˆ HTML ๋น ๋ฅธ ์‹คํ–‰์šฉ
  • Docker (ms-azuretools.vscode-docker) - Docker ์‹ค์Šต ์‹œ
  • Git Graph (mhutchie.git-graph) - ์„ ํƒ

์„ค์น˜ ๋ฐฉ๋ฒ•:

  1. VS Code ์ขŒ์ธก Extensions (Ctrl+Shift+X)
  2. ํ™•์žฅ ์ด๋ฆ„ ๊ฒ€์ƒ‰
  3. Install

5-1) Live Server๋กœ classXXX_quiz.html ์‹คํ–‰

alt text

  1. VS Code Extensions (Ctrl+Shift+X)์—์„œ Live Server (ritwickdey.LiveServer) ์„ค์น˜
  2. ์›ํ•˜๋Š” ํ€ด์ฆˆ ํŒŒ์ผ ์—ด๊ธฐ (์˜ˆ: pyBasics/class001/class001_quiz.html)
  3. ์—๋””ํ„ฐ ์šฐ์ธก ํ•˜๋‹จ Go Live ํด๋ฆญ
  4. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™์œผ๋กœ ์—ด๋ฆฐ ์ฃผ์†Œ์—์„œ ํ€ด์ฆˆ ํ’€์ด
  5. ์ •์ง€ํ•  ๋•Œ๋Š” ํ•˜๋‹จ ์ƒํƒœ๋ฐ”์˜ Port:5500(๋˜๋Š” Go Live) ํด๋ฆญ

5-2) ์†”๋ฃจ์…˜/ํ”Œ๋žซํผ ํ™”๋ฉด ์บก์ฒ˜ (๊ฐ€์ƒ ์•„์ด๋”” ๋ชจ์˜)

๋ณด์•ˆ/๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ๊ฐ€์ƒ ์•„์ด๋”” ๊ธฐ๋ฐ˜ ๋ชจ์˜ ์บก์ฒ˜์ž…๋‹ˆ๋‹ค.

ChatGPT ๊ฐ€์ž…/๋กœ๊ทธ์ธ

chatgpt signup mock

Codex ์—ฐ๋™ ์„ค์ •

codex integration mock

GitHub ๋กœ๊ทธ์ธ/์ €์žฅ์†Œ ์ ‘๊ทผ

github mock

VS Code ํ™•์žฅํŒฉ ์„ค์น˜

vscode extensions mock

Markdown Mermaid ๋ฏธ๋ฆฌ๋ณด๊ธฐ

mermaid preview mock

Python ๊ฐ€์ƒํ™˜๊ฒฝ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

python env mock

Docker ๊ธฐ๋ฐ˜ RAG/LLM ์‹ค์Šต ๊ตฌ์„ฑ

docker rag mock

6) Markdown/MD ์ดํ•ด ๋ฐ ๋ทฐ์–ด

6.1 md ํŒŒ์ผ ์˜๋ฏธ

  • .md๋Š” Markdown ๋ฌธ์„œ ํฌ๋งท
  • ์ฝ”๋“œ, ํ‘œ, ์ฒดํฌ๋ฆฌ์ŠคํŠธ, Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌ

6.2 md ํŒŒ์ผ ๋ณด๊ธฐ

  • VS Code์—์„œ ํŒŒ์ผ ์—ด๊ณ  Ctrl+Shift+V (๋ฏธ๋ฆฌ๋ณด๊ธฐ)
  • ๋˜๋Š” Ctrl+K ํ›„ V (์˜† ๋ฏธ๋ฆฌ๋ณด๊ธฐ)

6.3 Mermaid ์‚ฌ์šฉ/๊ฐ€์ž… ์•ˆ๋‚ด

  • Mermaid ์ž์ฒด ์‚ฌ์šฉ์€ ๊ฐ€์ž…์ด ํ•„์š” ์—†์Œ
  • VS Code ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋˜๋Š” GitHub ๋ Œ๋”๋ง์œผ๋กœ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์„ ํƒ: ํ˜‘์—…ํ˜• ํŽธ์ง‘์ด ํ•„์š”ํ•˜๋ฉด https://www.mermaidchart.com ๊ฐ€์ž… ์‚ฌ์šฉ ๊ฐ€๋Šฅ

7) ํ™˜๊ฒฝ ๊ตฌ์„ฑ (๊ฐ€์ƒํ™˜๊ฒฝ + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜)

7.1 Windows PowerShell

cd C:\DevOps\Python-AI_Agent-Class
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt

7.2 Linux/macOS (bash)

cd /path/to/Python-AI_Agent-Class
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt

7.2-1 venv๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • venv๋Š” ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋…๋ฆฝ๋œ Python ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ์ด ์ €์žฅ์†Œ์—์„œ๋Š” .venv/ ํด๋”๊ฐ€ ๊ทธ ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ฉฐ, ๋‚ด๋ถ€์— ์ „์šฉ Python ์‹คํ–‰ ํŒŒ์ผ๊ณผ ์ „์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ(PC ์ „์ฒด) Python๊ณผ ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์™€ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์ถฉ๋Œ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

  • ํ”„๋กœ์ ํŠธ๋ณ„ ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ๋ถ„๋ฆฌํ•ด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€์›/์ˆ˜๊ฐ•์ƒ์ด ๊ฐ™์€ requirements.txt๋กœ ์œ ์‚ฌํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ Python์„ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š์•„ ์‹ค์Šต ์‹คํŒจ ๋ณต๊ตฌ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์—… ์ค‘ ์—๋Ÿฌ ์›์ธ(์ฝ”๋“œ ๋ฌธ์ œ vs ํ™˜๊ฒฝ ๋ฌธ์ œ)์„ ๋” ๋น ๋ฅด๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7.3 Python ์ž‘์—… ์‹œ ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ํด๋”/ํŒŒ์ผ ์•ˆ๋‚ด

  • __pycache__/: Python ์‹คํ–‰ ์ค‘ ์ƒ์„ฑ๋˜๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ ์บ์‹œ ํด๋”์ž…๋‹ˆ๋‹ค.
  • *.pyc: __pycache__/ ๋‚ด๋ถ€์— ์ƒ์„ฑ๋˜๋Š” ์บ์‹œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • .venv/: ํ”„๋กœ์ ํŠธ ์ „์šฉ ๊ฐ€์ƒํ™˜๊ฒฝ ํด๋”์ž…๋‹ˆ๋‹ค(์ง์ ‘ ์ƒ์„ฑ).
  • .pytest_cache/, .mypy_cache/, .ruff_cache/: ํ…Œ์ŠคํŠธ/์ •์ ๋ถ„์„ ๋„๊ตฌ ์บ์‹œ์ž…๋‹ˆ๋‹ค.

ํ•™์Šต ํฌ์ธํŠธ:

  • __pycache__(๊ฐ€๋” __pychach๋กœ ์˜คํƒ€)์™€ ๊ฐ์ข… ์บ์‹œ ํด๋”๋Š” ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ •์ƒ ๋™์ž‘ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
  • ์บ์‹œ๋Š” ์ง€์›Œ๋„ ๋‹ค์‹œ ์ƒ์„ฑ๋˜๋ฉฐ, ์‹คํ–‰ ์„ฑ๋Šฅ์„ ๋•๋Š” ์ž„์‹œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
  • ์ด ์ €์žฅ์†Œ๋Š” .gitignore์— ์œ„ ํด๋”๋“ค์„ ํฌํ•จํ•ด Git ์ถ”์ ์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

8) requirements.txt ๊ตฌ์„ฑ๊ณผ ์˜๋ฏธ

ํ˜„์žฌ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ/ML + LLM/RAG + ์›น ์„œ๋น™ ์‹ค์Šต์„ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€ ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค.

pandas>=2.0
numpy>=1.26
matplotlib>=3.8
scikit-learn>=1.4
requests>=2.31
fastapi>=0.115
uvicorn>=0.30
pyttsx3>=2.90
SpeechRecognition>=3.10
langchain>=0.3
langchain-community>=0.3
langgraph>=1.0
Pillow>=10.0

ํŒจํ‚ค์ง€ ์šฉ๋„:

  • pandas, numpy: ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ/์ˆ˜์น˜ ๊ณ„์‚ฐ
  • matplotlib: ์‹œ๊ฐํ™”
  • scikit-learn: ML ๊ธฐ์ดˆ ์‹ค์Šต
  • requests: API ํ˜ธ์ถœ
  • fastapi, uvicorn: ํด๋ž˜์Šค ๋‹จ์œ„ ์›น ์‹ค์Šต ๋ฐฑ์—”๋“œ ์„œ๋น™
  • pyttsx3, SpeechRecognition: TTS/STT ์‹ค์Šต
  • langchain, langchain-community, langgraph: LLM/์ฒด์ธ/RAG/์—์ด์ „ํŠธ ์‹ค์Šต
  • Pillow: ์ด๋ฏธ์ง€ ์ƒ์„ฑ/์ฒ˜๋ฆฌ(Flow PNG ์ƒ์„ฑ ํฌํ•จ)

๊ด€๋ฆฌ ํŒ:

  • ์ƒˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ํ›„ ๋™๊ธฐํ™”
pip install package_name
pip freeze > requirements.txt
  • ํŒ€ ์ž‘์—… ์‹œ ๋ฒ„์ „ ๋ฒ”์œ„๋ฅผ ๋ช…์‹œํ•ด ์žฌํ˜„์„ฑ ํ™•๋ณด

9) Git/GitHub ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

9.1 ์ตœ์ดˆ ํด๋ก 

git clone <REPO_URL>
cd Python-AI_Agent-Class

9.2 ๊ธฐ๋ณธ ์ž‘์—… ๋ฃจํ”„

git checkout -b feature/readme-update
git status
git add README.md
git commit -m "docs: expand onboarding and setup guide"
git push -u origin feature/readme-update

9.3 ์ตœ์‹  ๋ฐ˜์˜

git checkout main
git pull origin main

10) ํ•™์Šต ์‹œ์ž‘ ๋ช…๋ น

๊ธฐ๋ณธ ์‹คํ–‰:

python pyBasics/class001/class001.py
python pyBasics/class001/class001_example1.py

ํด๋ž˜์Šค ๋‹จ์œ„ ์‹คํ–‰(๊ถŒ์žฅ):

./run_class.sh class041

Day ๋‹จ์œ„ ์‹คํ–‰(๋Ÿฐ์ฒ˜/์ •๋‹ต):

./run_day.sh 01 launcher
./run_day.sh 01 solution

์›น ์‹ค์Šต ์‹คํ–‰(pyBasics ์ œ์™ธ ํด๋ž˜์Šค):

cd dataVizPrep/class041
uvicorn server:app --reload
# ๋ธŒ๋ผ์šฐ์ €: http://127.0.0.1:8000

11) Mermaid/Flow ์žฌ์ƒ์„ฑ ๊ด€๋ จ

๊ณผ๋ชฉ๋ณ„ ํด๋” ๊ตฌ์กฐ ์žฌ์ •๋ ฌ(curriculum_index.csv ๊ธฐ์ค€):

python tools/organize_subject_folders.py

์ฐจ์‹œ ์ž๋ฃŒ ์žฌ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ:

python tools/rebuild_self_study_materials.py

์‹คํ–‰ ์‹œ ์ˆ˜ํ–‰ ์ž‘์—…:

  • class๋ณ„ md ๊ฐฑ์‹ 
  • class๋ณ„ Mermaid flow ๊ฐฑ์‹ 
  • class๋ณ„ PNG(classXXX_flow.png) ์žฌ์ƒ์„ฑ

README์šฉ ๋ชจ์˜ ์บก์ฒ˜ ์ด๋ฏธ์ง€ ์žฌ์ƒ์„ฑ:

python tools/generate_readme_mock_screenshots.py

์ฒจ๋ถ€ ์ปค๋ฆฌํ˜๋Ÿผ ๊ธฐ์ค€ ๋ฐ˜์˜ ์ ๊ฒ€ ๋ฆฌํฌํŠธ ์ƒ์„ฑ:

python tools/audit_curriculum_alignment.py
  • ์ƒ์„ฑ ํŒŒ์ผ: docs/curriculum_alignment_report.md

12) RAG/LLM ์‹ค์Šต์šฉ Docker ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ

์•„๋ž˜๋Š” ๋กœ์ปฌ ์‹ค์Šต ๊ถŒ์žฅ ๊ตฌ์„ฑ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

  • LLM ์„œ๋ฒ„: Ollama
  • ๋ฒกํ„ฐDB: Qdrant

์˜ˆ์‹œ docker-compose.yml:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    restart: unless-stopped

  qdrant:
    image: qdrant/qdrant:latest
    container_name: qdrant
    ports:
      - "6333:6333"
      - "6334:6334"
    volumes:
      - qdrant_data:/qdrant/storage
    restart: unless-stopped

volumes:
  ollama_data:
  qdrant_data:

์‹คํ–‰:

docker compose up -d
docker compose ps

๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ(์˜ˆ: Llama ๊ณ„์—ด):

docker compose exec ollama ollama pull llama3.1:8b

์—ฐ๋™์šฉ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€(ํ•„์š” ์‹œ):

pip install langchain-ollama qdrant-client sentence-transformers

๊ธฐ๋ณธ ์—ฐ๊ฒฐ ํ™•์ธ:

  • Ollama: http://localhost:11434
  • Qdrant: http://localhost:6333/dashboard

13) ์šด์˜ ๋ฐฉ์‹

  • ๊ถŒ์žฅ ์ˆ˜์—… ํ๋ฆ„: ์„ค๋ช… 10๋ถ„ + ์‹ค์Šต 30๋ถ„ + ์ •๋ฆฌ 10๋ถ„
  • ์ผ ์šด์˜ ๊ธฐ์ค€: ํ•˜๋ฃจ 8์‹œ๊ฐ„

14) GitHub Actions

ํ‘ธ์‹œ/PR ์‹œ ์ž๋™ ์‹คํ–‰:

  • RAG Agent ์ธ๋ฑ์‹ฑ/์งˆ์˜ API ๊ฒ€์ฆ ๋ฐ Docker ํŒŒ์ดํ”„๋ผ์ธ
  • ํ€ด์ฆˆ HTML ํ’ˆ์งˆ ๊ฒ€์ฆ

์›Œํฌํ”Œ๋กœ์šฐ ํŒŒ์ผ:

  • .github/workflows/autograde.yml
  • .github/workflows/quiz-quality.yml

15) ๊ถŒ์žฅ ๋ธŒ๋žœ์น˜ ์šด์˜

  • main: ๋ฐฐํฌ/๊ธฐ์ค€ ๋ธŒ๋žœ์น˜
  • develop: ํ†ตํ•ฉ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜
  • feature/class-xxx-*: ์ฐจ์‹œ๋ณ„ ์ˆ˜์ • ๋ธŒ๋žœ์น˜

16) ๋ผ์ด์„ ์Šค

๋ณธ ๊ต์œก ์ž๋ฃŒ์˜ ์ €์ž‘๊ถŒ ๋ฐ ๋ผ์ด์„ ์Šค ๊ถŒํ•œ์€ ์—๋“€์— ์ง€ํ‹ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.
๊ต์œก, ์‚ฌ๋‚ด๊ณต์œ , ์™ธ๋ถ€๋ฐฐํฌ, ์ƒ์šฉํ™œ์šฉ ๋“ฑ ํ˜•ํƒœ์™€ ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉ ์ „ **์‚ฌ์ „๊ณ ์ง€(์‚ฌ์ „ ์•ˆ๋‚ด/์Šน์ธ ์ ˆ์ฐจ)**๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.