Coder Social home page Coder Social logo

mlops-for-all.github.io's People

Contributors

aiden-jeon avatar anencore94 avatar binarybamboo avatar borishim avatar hoyajigi avatar jcpark3797 avatar jsshinn avatar kosehy avatar minkj1992 avatar mrsyee avatar riverallzero avatar ryankor avatar taepd avatar zamonia500 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mlops-for-all.github.io's Issues

English Version

Hi Folks, I get interested in the content are you are creating, but I can't read Korean ๐Ÿ˜ž
Is there some way I could help translate it to English? Probably google translate it's not a good solution, I tried using it and some text got strange

install-components-kf ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€ ๋ณ€๊ฒฝ

https://mlops-for-all.github.io/docs/setup-components/install-components-kf/#cert-manager

ํ˜„์žฌ issuer ์„ค์น˜์‹œ ๋ณด์ด๋Š” ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€๋Š” cert-manager ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€์ด๋ฉฐ,

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•จ

clusterissuer.cert-manager.io/kubeflow-self-signing-issuer created

[Enh] `API Deployment` ์ดํ›„ Mlops ์‹ค์Šต ์˜ˆ์ œ ์ถ”๊ฐ€ ๊ด€๋ จ ๋ฌธ์˜

์•ˆ๋…•ํ•˜์„ธ์š”.

์ตœ๊ทผ ์œ ํŠœ๋ธŒ์™€ ํŽ˜์ด์Šค๋ถ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์„ ์ค‘์‹ฌ์œผ๋กœ MLops ๊ด€๋ จ ๊ธ€์ด ๊พธ์ค€ํžˆ ์ฆ๊ฐ€ํ•˜๋ฉฐ ์˜ฌ๋ผ์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘์˜ MLops ๋ฌธ์„œ์—์„œ๋Š” ํ˜„์žฌ ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ๊ฐ„๋‹จํ•œ ํ™œ์šฉ ์ •๋„๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”.

์ถ”๊ฐ€๋กœ MLops ์‹ค์Šต์„ ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์‹ค์ „ ์‚ฌ๋ก€ ๋“ฑ์„ ์ถ”๊ฐ€๋ณด๋ฉด ์–ด๋–จ์ง€ ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋‘์˜ mlops ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ค ๋ณด๋‹ˆ ๋จธ์‹ ๋Ÿฌ๋‹ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๊ด€์ ์—์„œ์˜ ์ฝ”๋“œ๊ฐ€ ๋” ์ถ”๊ฐ€๋˜๋ฉด mlops ์ปค๋ฆฌ์–ด๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋” ๋งŽ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ์–ด ์ถ”๊ฐ€๋กœ ์ด์Šˆ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ MS Azure์—์„œ๋Š” ์ด๋ ‡๊ฒŒ MLops ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ธฐ์—…๋ณ„ ์‚ฌ๋ก€ ์ค‘ ์‰ฌ์šด ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด ๋‚˜๊ฐ€๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค.

MS Azure

์ €๋„ ๊ฐœ์ธ์ ์œผ๋กœ ์‹ค์Šต ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉด์„œ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์•„์ง ์˜ˆ์ œ๊ฐ€ ๋งŽ์ด ํ’๋ถ€ํ•œ ์ชฝ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์„œ, ์ด๋ ‡๊ฒŒ ๊ธ€์„ ๋‚จ๊น๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์ธ ์˜คํ”ˆ ์†Œ์Šค์— ๋Œ€ํ•œ ์ •๋ณด ์ถ”๊ฐ€ ๋ฌธ์˜

image

์—ฌ๊ธฐ์„œ ๋ณด์‹œ๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ณด๋ฉด ์ข‹์„ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•ด์„œ ๊ทธ๋ฆผ์œผ๋กœ ์˜ฌ๋ ค์ฃผ์…จ๋Š”๋ฐ
์˜คํ”ˆ์†Œ์Šค์˜ ์•„์ด์ฝ˜์„ ๋ณด๊ณ  ์–ด๋–ค ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด์•ผํ• ์ง€ ์•Œ์ง€ ๋ชปํ•ด์„œ ํ…์ŠคํŠธ๋กœ ์˜คํ”ˆ์†Œ์Šค ์ด๋ฆ„์„ ์ ์–ด์ฃผ์‹ ๋‹ค๋ฉด ์—„์ฒญ ํฐ ๋„์›€์ด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์–ด๋””์—๋‹ค๊ฐ€ ์ „๋‹ฌํ• ๊นŒ ํ•˜๋‹ค๊ฐ€ ์ด์Šˆ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค ใ… 

README link ๊นจ์ง

์•ˆ๋…•ํ•˜์„ธ์š”,

๋งˆ์ด๋„ˆํ•œ ์ด์Šˆ์ด๊ธด ํ•˜์ง€๋งŒ

README ํŒŒ์ผ์—
How to Contribute ๋งํฌ๊ฐ€ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด How to Contribute ์—์„œ
ํ˜„์žฌ How to Contribute ์œผ๋กœ
๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–‘์งˆ์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€

๋ฒ„๊ทธ ๋ฆฌํฌํŠธ, ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋“ฑ์˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋”ฐ๋ฅธ ์•„์Šˆ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€
Discussion ๊ณผ์˜ ํŒŒํŽธํ™”๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ ๋ฐฉ์•ˆ ๋…ผ์˜

[Question] 12. Component - MLFlow `Run` ํŒŒํŠธ ์ฝ”๋“œ ์—๋Ÿฌ ๋ฌธ์˜

1. ์—๋Ÿฌ ์žฌํ˜„

12. Component - MLFlow์˜ Run ํŒŒํŠธ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ›„, ์‹คํ–‰ํ•˜์—ฌ yaml ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

image

์ดํ›„ ์ƒ์„ฑ๋œ yaml ํŒŒ์ผ์„ kubeflow pipeline์— ์˜ฌ๋ ค ์‹คํ–‰ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ํ™”๋ฉด์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

image

ValueError: '' is not in list

13๋ฒˆ ๋‚ด์šฉ์ด ๋””๋ฒ„๊น…์ด๋ผ, ์ดํ›„ ๋‚ด์šฉ์„ ๋ณด๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ kubeflow์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” tgz ํŒŒ์ผ์„ csv๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์—์„œ ํ™•์ธํ•ด๋ดค์œผ๋‚˜, ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์–ด์žˆ๋Š” ์ƒํ™ฉ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

image

์ •ํ™ฉ์ƒ SVM ํ›ˆ๋ จ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์กด์žฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ, ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์„ ํŠน์ •ํ•  ์ˆ˜๊ฐ€ ์—†์–ด (svm fit ๋ถ€๋ถ„์ด๋ผ ๋ชจ๋ธ ํ›ˆ๋ จ์ด ์ง„ํ–‰๋˜๋Š” ์œ„์น˜๋ผ ์ง์ž‘๋˜๋‚˜, ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ kfp ์„ค์น˜ ํ›„ from kfp.components import InputPath, OutputPath, create_component_from_func๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์•„ ์œ ๋… ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) issue๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐ ํ›„, 12. Component - MLFlow์˜ Run ํŒŒํŠธ๊ฐ€ ์ˆ˜์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด, python ์ฝ”๋“œ์™€ ํ•จ๊ฒŒ ์ƒ์„ฑ๋œ yaml ๋‚ด์šฉ์ด ํ•จ๊ป˜ PR๋˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

seldon-core-analytics chart (Grafana and prometheus) not working with k8s v.1.22+

Hello!
According to SeldonIO/seldon-core#4513, seldon-core analytics was deprecated for new versions of kubernetes.

I've tested out your documentation regarding the installation of the two monitoring components
as described here,

https://mlops-for-all.github.io/en/docs/setup-components/install-components-pg,

on k3s version Server Version: v1.27.5+k3s1, and I got the same errors as described in SeldonIO/seldon-core#4513, meaning
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "seldon-core-analytics-grafana" namespace: "seldon-system" from "": no matches for kind "PodSecurityPolicy" in version "policy/v1beta1"
I've added also a new issue on the seldon about the Grafana support for new versions of k8s:

SeldonIO/seldon-core#5134

Do you have any updates on the above issues?

Thanks,
Florin

[Question] ๋กœ์ปฌ์—์„œ ๋ชจ๋‘์˜ MLops ํ™˜๊ฒฝ ๊ตฌ์„ฑ์‹œ, Docker ๋นŒ๋“œ ํ›„, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹ค์Šตํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”.

๋ชจ๋‘์˜ mlops ๋ฌธ์„œ๋ฅผ ์ฒซ ์‹ค์Šต์€ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๊ณ , ์ด์ œ 2๋ฒˆ์งธ ๋‚ด์šฉ์„ ์ญ‰ ์ฝ์–ด๋ณด๋ฉด์„œ ๋‚ด์šฉ์„ ๋‹ค์ ธ๊ฐ€๋ ค๋Š” ๊ตฌ๋…์ž์ž…๋‹ˆ๋‹ค.

์ €ํฌ๊ฐ€ ์ง€๊ธˆ ์•ˆ๋‚ดํ•ด์ฃผ์‹  ๋‚ด์šฉ๋Œ€๋กœ๋ฉด, Ubuntu OS์—์„œ ๋„์ปค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ์š”.

๋กœ์ปฌ์—์„œ ์šฐ๋ถ„ํˆฌ๋ฅผ ํŒŒํ‹ฐ์…˜ํ•ด์„œ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๊ณ , virtual box๋ฅผ ์ด์šฉํ•ด ๋„์šฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์ด ๋งฅ์ด๋‚˜ ์œˆ๋„์šฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , m1 ๋งฅ๋ถ์—์„œ๋Š” ์•„์ง virtual box ์ง€์›์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์ ์ธ ์š”์†Œ๋“ค์„ ๊ฐ์•ˆํ•ด ์‚ฌ์šฉ์ž์˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•ด ubuntu ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ , ๊ฑฐ๊ธฐ์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์„ธ์…˜์„ ๋ฌธ์„œ ์ดˆ๋ฐ˜์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–จ์ง€ ํ•œ ๋ฒˆ ์ œ์•ˆ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ข€ ์ฐพ์•„๋ด์•ผ๊ฒ ์ง€๋งŒ, ๋„์ปค์— OS ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ๋นŒ๋“œํ•˜๊ณ , ๊ทธ ์•ˆ์—์„œ ๋‹ค์‹œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๋ฌธ๋“ ๋– ์˜ค๋ฅธ ์•„์ด๋””์–ด๋ผ maintainer ๋ถ„๋“ค๊ณผ ๋…ผ์˜ ํ›„, ํ•ด๋‹น ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด์„œ ์‹ค์Šตํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

`Edit this page on GitHub` ๋งํฌ 404 ์—๋Ÿฌ

์•ˆ๋…•ํ•˜์„ธ์š”.

๋ชจ๋‘์˜ mlops ๋ฌธ์„œ ํ•™์Šต ์ค‘์— footer ๋ถ€๋ถ„์˜ Edit this page on Github ๋งํฌ ํด๋ฆญ ์‹œ, 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด ์ด์Šˆ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

1. ํŽ˜์ด์ง€ ๋งํฌ ํด๋ฆญ ํ™”๋ฉด

image

2. ๋งํฌ ํด๋ฆญ์‹œ 404 ์—๋Ÿฌ ๋ฐœ์ƒ

image

ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋งํฌ๊ฐ€ github์—์„œ ์ œ๊ฑฐ๋œ ๊ฒƒ ๊ฐ™์€๋ฐ, ํ•œ ๋ฒˆ ํ™•์ธํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฌธ์˜๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด issue๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Could not find CSRF cookie XSRF-TOKEN in the request

์•ˆ๋…•ํ•˜์„ธ์š”!
๊ฐ•์˜์— ํ•„์š”ํ•œ kubflow ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์„ค์น˜ํ•˜๊ณ  kubectl port-forward --address [์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„ IP] svc/istio-ingressgateway -n istio-system 8080:80 ๋กœ ๋Œ€์‹œ๋ณด๋“œ์— ๋“ค์–ด์™€์„œ ์ฃผํ”ผํ„ฐ๋žฉ์„ launchํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ alert๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์„œ ์ง„ํ–‰์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[403] Could not find CSRF cookie XSRF-TOKEN in the request. http://[์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„ IP]:8080/jupyter/api/namespaces/kubeflow-user-example-com/notebooks

๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์€๋ฐ ์›๊ฒฉ์„œ๋ฒ„์—์„œ ์‹ค์Šต์„ ํ•˜๊ณ ์‹ถ์–ด ๊ผญ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ด๋„ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...
๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์„๊นŒ์š”?
ํ•ญ์ƒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

`Kubeflow UI Guide` ํŽ˜์ด์ง€์˜ `Central Dashboard` ์ ‘์† ๊ด€๋ จ ์ถ”๊ฐ€ ๋‚ด์šฉ ํ•„์š” ๋ฌธ์˜

์•ˆ๋…•ํ•˜์„ธ์š”.

๊พธ์ค€ํžˆ ๋ชจ๋‘์˜ mlops ๋ฌธ์„œ๋ฅผ ์ž˜ ์ฝ๊ณ  ์‹ค์Šต ์ค‘์ธ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.

์ข‹์€ ์‹ค์Šต ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‹ค์Šต ๊ด€๋ จ ๋ฌธ์˜ ์‚ฌํ•ญ์ด ์žˆ์–ด ์ด์Šˆ๋ฅผ ๋‚จ๊ธฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ๋ฌธ์„œ ์ƒํ™ฉ ๊ตฌํ˜„ ์‹œ๋„

image

์œ„์˜ ์ด๋ฏธ์ง€์—์„œ์ฒ˜๋Ÿผ Central Dashboard ์ ‘์†๊ณผ ๊ด€๋ จํ•œ ๋‚ด์šฉ์ด ๋ชจ๋‘์˜ mlops ๋ฌธ์„œ์— ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์„œ ๋งํฌ

์—ฌ๊ธฐ์„œ ํ•ด๋‹น ๋ฌธ์„œ ์•ž์— ์„ค๋ช…๋˜์–ด ์žˆ๋Š” Central Dashboard ์ ‘์†์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” kubectl port-forward --address <internal ip> svc/centraldashboard -n kubeflow 8082:80 ํ˜•ํƒœ๋กœ ์ ‘์†ํ•˜๊ฒŒ๋” ์•ˆ๋‚ด๊ฐ€ ๋˜์–ด ์žˆ์—ˆ๊ณ , ์ดˆ๋ฐ˜์— ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘์†ํ•˜๋‹ˆ, ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2. ๋ฌธ์„œ ๋‚ด์šฉ ์˜ค์ธ์œผ๋กœ CentralDashboard์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ

image

์ดํ›„, Kubeflow repo์— ์˜ฌ๋ผ์˜จ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋ฅผ ์ฝ์œผ๋ฉด์„œ istio-ingressgateway ์„ค์ •์„ ํ†ตํ•ด ์ ‘์†ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘์˜ mlops ๋ฌธ์„œ์—์„œ ์•ˆ๋‚ดํ–ˆ๋˜ ๊ฒƒ์ด ์ƒ๊ฐ์ด ๋‚ฌ๊ณ , kubectl port-forward --address <internal ip> svc/istio-ingressgateway -n istio-system 8080:80 ๋กœ ์ ‘์†ํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ jupyter notebook ์ƒ์„ฑ ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

3. ์—๋Ÿฌ ์ƒํ™ฉ ํ•ด๊ฒฐ

image

๊ทธ๋ž˜์„œ ๋ฌธ์„œ๋ฅผ ์‹ค์Šตํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ๋˜‘๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ํ•ด๋‹น ๋ถ€๋ถ„ ๋‚ด์šฉ์„ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์„œ kubectl port-forward --address <internal ip> svc/istio-ingressgateway -n istio-system 8080:80 ๋กœ ์ ‘๊ทผํ•ด๋‹ฌ๋ผ๋Š” ๋‚ด์šฉ์„ ํ•œ ์ค„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ํ˜น์‹œ PR์„ ๋ณด๋‚ด๋„ ๋˜๋Š”์ง€ ๋ฌธ์˜๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

4. Reference

[Question] Kubeflow -> 11. Pipeline Run Result ํŒŒํŠธ์˜ Visualization ๊ด€๋ จ yaml ํŒŒ์ผ ๋‚ด์šฉ ์ถ”๊ฐ€ ๋ฌธ์˜ ๋ฐ 8. Component InputPath / OutputPath ์˜คํƒ€ ์ปค๋ฐ‹ ๊ด€๋ จ ์š”์ฒญ

1. Kubeflow -> 11. Pipeline Run Result ํŒŒํŠธ์˜ Visualization ๊ด€๋ จ yaml ํŒŒ์ผ ๋‚ด์šฉ ์ถ”๊ฐ€ ๋ฌธ์˜

์•ˆ๋…•ํ•˜์„ธ์š”.

image

์œ„์˜ ์ด๋ฏธ์ง€์— ๋ณด์ด๋Š” ํ๋ธŒ ํ”Œ๋กœ์šฐ์˜ ์‹œ๊ฐํ™”๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” yaml ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ชจ๋‘์˜mlops ๋ฌธ์„œ์— ํ˜„์žฌ ์—†์–ด ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€๋ฐ ํ•ด๋‹น ๋ถ€๋ถ„ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๋‹˜์ด ํ™•์ธํ•ด์ฃผ์‹œ๋ฉด, ๋น ๋ฅด๊ฒŒ PR์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‹จ์€ plot_pipeline.yaml ์„ค์ • ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: plot-pipeline-
  annotations: {pipelines.kubeflow.org/kfp_sdk_version: 1.8.9, pipelines.kubeflow.org/pipeline_compilation_time: '2
022-01-17T13:31:32.963214',
    pipelines.kubeflow.org/pipeline_spec: '{"name": "plot_pipeline"}'}
  labels: {pipelines.kubeflow.org/kfp_sdk_version: 1.8.9}
spec:
  entrypoint: plot-pipeline
  templates:
  - name: plot-linear
    container:
      args: [--mlpipeline-ui-metadata, /tmp/outputs/mlpipeline_ui_metadata/data]
      command:
      - sh
      - -c
      - (PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet --no-warn-script-location
        'matplotlib' || PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet
        --no-warn-script-location 'matplotlib' --user) && "$0" "$@"
      - sh
      - -ec
      - |
        program_path=$(mktemp)
        printf "%s" "$0" > "$program_path"
        python3 -u "$program_path" "$@"
      - |
        def _make_parent_dirs_and_return_path(file_path: str):
            import os
            os.makedirs(os.path.dirname(file_path), exist_ok=True)
            return file_path
        def plot_linear(mlpipeline_ui_metadata):
            import base64
            import json
            from io import BytesIO
            import matplotlib.pyplot as plt
            plt.plot([1, 2, 3], [1, 2, 3])
            tmpfile = BytesIO()
            plt.savefig(tmpfile, format="png")
            encoded = base64.b64encode(tmpfile.getvalue()).decode("utf-8")
            html = f"<img src='data:image/png;base64,{encoded}'>"
            metadata = {
                "outputs": [
                    {
                        "type": "web-app",
                        "storage": "inline",
                        "source": html,
                    },
                ],
            }
            with open(mlpipeline_ui_metadata, "w") as html_writer:
                json.dump(metadata, html_writer)

        import argparse
        _parser = argparse.ArgumentParser(prog='Plot linear', description='')
        _parser.add_argument("--mlpipeline-ui-metadata", dest="mlpipeline_ui_metadata", type=_make_parent_dirs_and_return_path, required=True, default=argparse.SUPPRESS)
        _parsed_args = vars(_parser.parse_args())
        _outputs = plot_linear(**_parsed_args)
      image: python:3.7
    outputs:
      artifacts:
      - {name: mlpipeline-ui-metadata, path: /tmp/outputs/mlpipeline_ui_metadata/data}
    metadata:
      labels:
        pipelines.kubeflow.org/kfp_sdk_version: 1.8.9
        pipelines.kubeflow.org/pipeline-sdk-type: kfp
        pipelines.kubeflow.org/enable_caching: "true"
      annotations: {pipelines.kubeflow.org/component_spec: '{"implementation": {"container":
          {"args": ["--mlpipeline-ui-metadata", {"outputPath": "mlpipeline_ui_metadata"}],
          "command": ["sh", "-c", "(PIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip
          install --quiet --no-warn-script-location ''matplotlib'' || PIP_DISABLE_PIP_VERSION_CHECK=1
          python3 -m pip install --quiet --no-warn-script-location ''matplotlib''
          --user) && \"$0\" \"$@\"", "sh", "-ec", "program_path=$(mktemp)\nprintf
          \"%s\" \"$0\" > \"$program_path\"\npython3 -u \"$program_path\" \"$@\"\n",
          "def _make_parent_dirs_and_return_path(file_path: str):\n    import os\n    os.makedirs(os.path.dirname(file_path),
          exist_ok=True)\n    return file_path\n\ndef plot_linear(mlpipeline_ui_metadata):\n    import
          base64\n    import json\n    from io import BytesIO\n\n    import matplotlib.pyplot
          as plt\n\n    plt.plot([1, 2, 3], [1, 2, 3])\n\n    tmpfile = BytesIO()\n    plt.savefig(tmpfile,
          format=\"png\")\n    encoded = base64.b64encode(tmpfile.getvalue()).decode(\"utf-8\")\n\n    html
          = f\"<img src=''data:image/png;base64,{encoded}''>\"\n    metadata = {\n        \"outputs\":
          [\n            {\n                \"type\": \"web-app\",\n                \"storage\":
          \"inline\",\n                \"source\": html,\n            },\n        ],\n    }\n    with
          open(mlpipeline_ui_metadata, \"w\") as html_writer:\n        json.dump(metadata,
          html_writer)\n\nimport argparse\n_parser = argparse.ArgumentParser(prog=''Plot
          linear'', description='''')\n_parser.add_argument(\"--mlpipeline-ui-metadata\",
          dest=\"mlpipeline_ui_metadata\", type=_make_parent_dirs_and_return_path,
          required=True, default=argparse.SUPPRESS)\n_parsed_args = vars(_parser.parse_args())\n\n_outputs
          = plot_linear(**_parsed_args)\n"], "image": "python:3.7"}}, "name": "Plot
          linear", "outputs": [{"name": "mlpipeline_ui_metadata", "type": "UI_Metadata"}]}',
        pipelines.kubeflow.org/component_ref: '{}'}
  - name: plot-pipeline
    dag:
      tasks:
      - {name: plot-linear, template: plot-linear}
  arguments:
    parameters: []
  serviceAccountName: pipeline-runner

2. Kubeflow -> 8. Component InputPath / OutputPath ๋ถ€๋ถ„ ์˜คํƒ€ ์ปค๋ฐ‹ ์ง„ํ–‰ ๋ฌธ์˜

image

1๋ฒˆ ๋‚ด์šฉ ์ถ”๊ฐ€์™€ ํ•จ๊ป˜ ๊ฐ„๋‹จํ•œ ์˜คํƒ€๋ฅผ ํ๋ธŒํ”Œ๋กœ์šฐ ์ฑ•ํ„ฐ 8์—์„œ ๋ฐœ๊ฒฌํ•ด ํ•จ๊ป˜ ์ˆ˜์ • PR์„ ๋ณด๋‚ด๊ณ  ์‹ถ์€๋ฐ, ํ™•์ธํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Levels of MLOps ๋ฌธ์„œ ์ด์Šˆ

๋ฌธ์„œ ๋งํฌ: https://mlops-for-all.github.io/docs/introduction/levels/

์•ˆ๋…•ํ•˜์„ธ์š”, ๋จผ์ € MLOps ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•ด ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฆ„์ด ์•„๋‹ˆ๊ณ  Levels of MLOps ๋ฌธ์„œ์ชฝ์„ ์ฝ๋‹ค๊ฐ€ ์ด์ƒํ•œ์ ์ด ๋ฐœ๊ฒฌ๋˜์–ด ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๋‹น ๋ฌธ์„œ์˜ Google MLOps level2 ์•„ํ‚คํ…์ณ ๊ทธ๋ฆผ์„ ๋ดค์„ ๋•Œ
image 5๋ฒˆ, ๋ชจ๋ธ ์„œ๋น™ Prediction server์˜ CD๊ฐ€ 2๋‹จ๊ณ„์— ๊ทธ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ๊ตฌ๊ธ€์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ดค์„ ๋•Œ ํ•ด๋‹น Model Serving์— ๋Œ€ํ•œ CD๋Š” MLOps level 1์—์„œ ์ด๋ค„์ง€๊ณ  ์žˆ๊ณ  ์ด๊ฐ€ ํ˜ผ๋™์„ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฒƒ ๊ฐ™์•„ ์ด์Šˆ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.

๊ตฌ๊ธ€ ๊ณต์‹ ๋ฌธ์„œ ์ž๋ฃŒ(์›๋ณธ)

๋ชจ๋ธ์˜ ์ง€์†์  ๋ฐฐํฌ: ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์˜ ML ํŒŒ์ดํ”„๋ผ์ธ์€ ์ƒˆ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋œ ์ƒˆ ๋ชจ๋ธ์— ์˜ˆ์ธก ์„œ๋น„์Šค๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ๋ฐ ๊ฒ€์ฆ๋œ ๋ชจ๋ธ์„ ์˜จ๋ผ์ธ ์˜ˆ์ธก์šฉ ์˜ˆ์ธก ์„œ๋น„์Šค๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋ธ ๋ฐฐํฌ ๋‹จ๊ณ„๊ฐ€ ์ž๋™ํ™”๋ฉ๋‹ˆ๋‹ค.
https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning?hl=ko#mlops_level_1_ml_pipeline_automation

ํ˜น์‹œ ์ด์— ๋Œ€ํ•ด ์ œ๊ฐ€ PR์„ ๋งŒ๋“ค์–ด ์ˆ˜์ •ํ•ด๋„ ๊ดœ์ฐฎ์„๊นŒ์š”?

[Question] API Deployment ํŒŒํŠธ `Node_IP` ์ฃผ์†Œ ์„ค์ • ๊ฐ’์˜ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์„ค์ • ๊ฐ’ ๋ฌธ์˜

์•ˆ๋…•ํ•˜์„ธ์š”.

๋ชจ๋‘์˜ MLops ์‹ค์Šต์„ ์ˆ˜ํ–‰ ์ค‘์ธ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋‘์˜ MLops 1ํšŒ๋…์„ ๊ฑฐ์˜ ์ง„ํ–‰ ์™„๋ฃŒํ–ˆ๊ณ , ๋ฐฐํฌ ๋‹จ๊ณ„์— ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์–ด ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.

image

์œ„์™€ ๊ฐ™์ด ๋…ธ๋“œ ์ฃผ์†Œ ๊ฐ’์„ ์„ค์ • ์ค‘์ธ๋ฐ์š”.

ํ•ด๋‹น ๊ฐ’์˜ ์ฃผ์†Œ ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ํด๋ผ์šฐ๋“œ์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” internal ip (๋˜๋Š” private ip) ๋กœ ๋Œ€์ฒดํ•ด๋„ ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ ์—ฌํƒœ๊นŒ์ง€ ๋ชจ๋‘์˜ mlops ๋ฌธ์„œ๋ฅผ ์‹ค์Šตํ•  ๋•Œ์˜ ์ •ํ™ฉ์ƒ 192.168.x.x ์‚ฌ์„ค ์ฃผ์†Œ๋ฅผ ํด๋ผ์šฐ๋“œ์—์„œ ์„ค์ •ํ•  ๋•Œ, ํด๋ผ์šฐ๋“œ ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋˜ internal ip๋กœ ๋Œ€์ฒด์„œ ์‚ฌ์šฉ์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ์ œ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ง€์‹์ด ์งง๋‹ค๋ณด๋‹ˆ, ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋ฌธ์˜๋“œ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, ๋งŒ์•ฝ ์‚ฌ์„ค ์ฃผ์†Œ๋กœ ์„ค์ •ํ•ด๋„ ๋œ๋‹ค๋ฉด, ์œ„์˜ ์ด๋ฏธ์ง€ ๋‚ด์šฉ์— ๋Œ€ํ•ด ํด๋ผ์šฐ๋“œ ์ƒ์˜ ์ฃผ์†Œ ๊ฐ’ ์„ค์ • ๋‚ด์šฉ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ PR ํ•ด๋„ ๋˜๋Š”์ง€ ํ•จ๊ป˜ ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.