[Kubernetes] ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Deployment ๋ฐ Service ํŒŒ์ผ ๊ฐ€์ด๋“œ
ยท
๐Ÿ’ป Programming/Docker & Kubernetes
1. ๊ฐœ์š”Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋ ค๋ฉด Deployment์™€ Service ํŒŒ์ผ์ด ํ•„์ˆ˜์˜ˆ์š”. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” deployment.yaml๊ณผ service.yaml์„ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ , ๊ฐ ์•„๊ทœ๋จผํŠธ๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”. 2. Deployment ํŒŒ์ผ (deployment.yaml)Deployment๋Š” Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค ์ค‘ ํ•˜๋‚˜์˜ˆ์š”.๊ธฐ๋ณธ ์˜ˆ์ œ (deployment.yaml)apiVersion: apps/v1kind: Deploymentmetadata: name: my-app-deployment labels: app: my-appspec: replicas: 3 # ์‹คํ–‰ํ•  Pod ๊ฐœ์ˆ˜ selector:..
[Kubernetes] ๋กœ์ปฌ์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹ค์Šตํ•˜๊ธฐ - Minikube ํ™œ์šฉ
ยท
๐Ÿ’ป Programming/Docker & Kubernetes
๐Ÿ’ก ์‹ค์Šต ๊ฐœ์š”์ด ๊ธ€์—์„œ๋Š” Mac์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Minikube)๋ฅผ ํ™œ์šฉํ•˜์—ฌ FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ค„๋ณด๋ ค ํ•ด์š”. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”. ํ•˜์ง€๋งŒ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š”  ๋ณต์žกํ•  ์ˆ˜ ์žˆ์ฃ . ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ Minikube๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ , FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. โœ… ์‹ค์Šต ์ˆœ์„œํ™˜๊ฒฝ ์„ค์ •Kubernetes(Minikube, kubectl) ์„ค์น˜Minikube ์‹คํ–‰ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ™•์ธFastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑDocker๋กœ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธKubernetes์— ๋ฐฐํฌ (deployment.yaml, service.yaml ์ž‘์„ฑ ๋ฐ ์ ์šฉ)๋กœ์ปฌ์—์„œ API ..
[python] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ '์•Œ๊ณ ๋ฆฌ์ฆ˜'
ยท
๐Ÿ’ป Programming/์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ
์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹จ๊ณ„์ ์ธ ์ ˆ์ฐจ์ด๋‹ค. ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋ฉด ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์ œ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์•Œ์•„๋‘ฌ์•ผ๊ฒ ์ง€? (๋งจ๋‚  ๊นŒ๋จน๋Š”๋‹ค)Brute Force๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๊ณ ๋ คํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ์ง๊ด€์ ์ด๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ๋กœ ์ œํ•œ์ด ์ ๊ฑฐ๋‚˜, ๋ฌธ์ œ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.ํŠน์ง•๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ : ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€.์‹œ๊ฐ„ ๋ณต์žก๋„: ๋ฌธ์ œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ O(n^2), O(n!)์™€ ๊ฐ™์€ ๋†’์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์‹œ๋„: ์ตœ์ ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค..
[python] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ '์ž๋ฃŒ ๊ตฌ์กฐ'
ยท
๐Ÿ’ป Programming/์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ
์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ , ๋ฌธ์ œ์— ๋งž๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค...๋Š” ๋ง์€ ์ง„๋ถ€ํ•˜๊ณ  ์•ˆ ๊นŒ๋จน๊ฒŒ ์ ์–ด๋ผ๋„ ๋‘”๋‹ค. 1. ๋ฆฌ์ŠคํŠธ (List)๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž„.์‹œ๊ฐ„ ๋ณต์žก๋„: ์ธ๋ฑ์Šค ์ ‘๊ทผ O(1), ์‚ฝ์ž…/์‚ญ์ œ O(n) (์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ ์‹œ)์‚ฌ์šฉ ์‚ฌ๋ก€: ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ, ๋ฆฌ์ŠคํŠธ์˜ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ์œ ์šฉ# ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑarr = [1, 2, 3]# ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ ์ถ”๊ฐ€arr.append(4) # O(1)# ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์š”์†Œ ์ ‘๊ทผprint(arr[2])..
[LLM] RAG ์„ค๋ช… ๋ฐ ์‹ค์Šต | OpenAI ๋ชจ๋ธ๊ณผ ChromaDB๋ฅผ ์ด์šฉํ•œ RAG ์‹ค์Šต
ยท
๐Ÿ’ป Programming/LLM
์•ˆ๋…•ํ•˜์„ธ์š”! ๋ญ…์ฆค์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” OpenAI์˜ Chat API์™€ ChromaDB๋ฅผ ํ™œ์šฉํ•œ RAG(Retrieval-Augmented Generation)์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”. ์‹ค์Šต ์ฝ”๋“œ๋„ ์žˆ๋‹ต๋‹ˆ๋‹ค ๐Ÿ˜Š RAG๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ์–ธ์–ด ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•ด ์ข€ ๋” ์ •ํ™•ํ•˜๊ณ  ๋งฅ๋ฝ์— ๋งž๋Š” ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ผ์š” ๐Ÿค—๐Ÿ“Œ RAG (Retrieval-Augmented Generation)RAG๋Š” Retrieval-Augmented Generation์˜ ์•ฝ์ž๋กœ, ์ •๋ณด ๊ฒ€์ƒ‰๊ณผ ์ƒ์„ฑํ˜• AI๋ฅผ ๊ฒฐํ•ฉํ•œ ๋ฐฉ๋ฒ•์ด์—์š”. GPT์™€ ๊ฐ™์€ ์–ธ์–ด ๋ชจ๋ธ์€ ์ž์ฒด์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ง€์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ์ตœ์‹  ์ •๋ณด๋‚˜ ํŠน์ • ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ์ง€ ๋ชปํ•  ๋•Œ๋„ ์žˆ์–ด์š”. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด RAG๋ฅผ ์‚ฌ์šฉํ•ด์š”.Retrieval..
[LLM] OpenAI GPT API ์‚ฌ์šฉ ๊ฐ€์ด๋“œ | ChatGPT ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
ยท
๐Ÿ’ป Programming/LLM
์•ˆ๋…•ํ•˜์„ธ์š” ! ์š”์ฆ˜ LLM ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๊ณ„์† ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ์žˆ๋Š” ๋ญ…์ฆค์ž…๋‹ˆ๋‹ค.์˜ค๋Š˜์€ OpenAI์˜ GPT API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š” ๐Ÿ”ฅ OpenAI์˜ GPT API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด OpenAI LLM์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ๋ณต์žกํ•œ ์ฝ”๋”ฉ์ด๋‚˜ AI ๋ชจ๋ธ ํ•™์Šต ์—†์ด๋„ ์ฑ—๋ด‡, ๊ธ€์“ฐ๊ธฐ ๋„์šฐ๋ฏธ, ๋ฐ์ดํ„ฐ ๋ถ„์„, ๊ทธ๋ฆฌ๊ณ  ๋ฒˆ์—ญ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๋ฉด ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์— ์ง์ ‘ LLM์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ์ง€๊ธˆ๋ถ€ํ„ฐ OpenAI GPT API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๋ณผ๊ฒŒ์š”.๐Ÿ“Œ API ์‚ฌ์šฉ ์ค€๋น„ OpenAI ์œ ๋ฃŒ ๊ฒฐ์ œ๋ฅผ ํ•˜์…จ๋‹ค๋ฉด, OpenAI Platform์—์„œ ๋กœ๊ทธ์ธ ํ›„, API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ์…”์•ผ ํ•ด์š”!์ด API ํ‚ค๋Š” OpenA..