āđāļāļĢāļ·āđāļāļāļĄāļ·āļ AI 101
āļāļēāļĢāļāļīāļāļāļēāļĄāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđ (LLM) āļāđāļ§āļĒ MLflow : āļāļđāđāļĄāļ·āļāļāļāļąāļāļŠāļĄāļāļđāļĢāļāđ

āļāļēāļĢāļāļĩāļāļīāļĄāļāđ
12 āđāļāļ·āļāļāļāļĩāđāļāđāļēāļāļĄāļēon

āđāļāļ·āđāļāļāļāļēāļāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđ (LLM) āļĄāļĩāļāļ§āļēāļĄāļāļąāļāļāđāļāļāđāļĨāļ°āļāļĒāļēāļĒāļāļāļēāļāļĄāļēāļāļāļķāđāļ āļāļēāļĢāļāļīāļāļāļēāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āļāļēāļĢāļāļāļĨāļāļ āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļāđāļāļķāļāļĄāļĩāļāļ§āļēāļĄāļāđāļēāļāļēāļĒāļĄāļēāļāļāļķāđāļ āļāļĩāđāļāļ·āļāļāļĩāđāļĄāļēāļāļāļ MLflow āđāļāļĒāđāļāđāļāđāļāļĨāļāļāļāļĢāđāļĄāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļ§āļāļāļĢāļāļĩāļ§āļīāļāļāļąāđāļāļŦāļĄāļāļāļāļāđāļĄāđāļāļĨāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ āļĢāļ§āļĄāļāļķāļ LLM
āđāļāļāļđāđāļĄāļ·āļāđāļāļīāļāļĨāļķāļāļāļĩāđ āđāļĢāļēāļāļ°āļŠāļģāļĢāļ§āļāļ§āļīāļāļĩāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļ MLflow āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļīāļāļāļēāļĄ āļāļĢāļ°āđāļĄāļīāļ āđāļĨāļ°āļāļĢāļąāļāđāļāđ LLM āđāļĢāļēāļāļ°āļāļĢāļāļāļāļĨāļļāļĄāļāļļāļāļāļĒāđāļēāļāļāļąāđāļāđāļāđāļāļēāļĢāļāļąāđāļāļāđāļēāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļāļāļāļļāļāđāļāļāļāļāļķāļāđāļāļāļāļīāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļąāđāļāļŠāļđāļ āļāļĢāđāļāļĄāļāđāļ§āļĒāļāļąāļ§āļāļĒāđāļēāļāđāļāđāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļāļĄāļēāļāļĄāļēāļĒāļāļĨāļāļāļāļēāļ
āļāļēāļĢāļāļģāļāļēāļāļāļāļ MLflow āđāļāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđ (LLM)
āļĄ.āļĨ.āđāļāļĨāļ§āđ āđāļāđāļāļĨāļēāļĒāđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļŠāļģāļāļąāļāđāļāļāļļāļĄāļāļāđāļĄāļāļāļĩāļāđāļĨāļīāļĢāđāļāļāļīāļāđāļĨāļ°āļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāļāđāļāļĄāļđāļĨ āđāļāļĒāđāļāļāļēāļ°āļāļĒāđāļēāļāļĒāļīāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļ§āļāļāļĢāļāļĩāļ§āļīāļāļāļāļāđāļĄāđāļāļĨāđāļĄāļāļāļĩāļāđāļĨāļīāļĢāđāļāļāļīāļ āđāļĄāļ·āđāļāļāļđāļāļāļķāļāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđ (LLM) MLflow āļāļģāđāļŠāļāļāļāļļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļķāđāļāļāļ°āļāđāļ§āļĒāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļąāļāļāļē āļāļīāļāļāļēāļĄ āļāļĢāļ°āđāļĄāļīāļ āđāļĨāļ°āļāļĢāļąāļāđāļāđāđāļĄāđāļāļĨāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļāļĒāđāļēāļāļĄāļēāļ āļāđāļāđāļāļāļĩāđāļāļ·āļāļ āļēāļāļĢāļ§āļĄāļāļāļāļ§āļīāļāļĩāļāļēāļĢāļāļģāļāļēāļāļāļāļ MLflow āļ āļēāļĒāđāļ LLM āđāļĨāļ°āļāļĢāļ°āđāļĒāļāļāđāļāļĩāđāļĄāļāļāđāļŦāđāļāļąāļāļ§āļīāļĻāļ§āļāļĢāđāļĨāļ°āļāļąāļāļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāļāđāļāļĄāļđāļĨ
āļāļēāļĢāļāļīāļāļāļēāļĄāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢāļāļēāļĢāđāļāđāļāļāļāļāļāļ LLM
āļĢāļ°āļāļāļāļīāļāļāļēāļĄ LLM āļāļāļ MLflow āđāļāđāļāļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļīāļāļāļēāļĄāļāļĩāđāļĄāļĩāļāļĒāļđāđ āļāļķāđāļāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļāļąāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāļāļēāļ°āļāļāļ LLM āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļīāļāļāļēāļĄāļāļēāļĢāđāļāđāļāļāļāļāļāļāđāļĄāđāļāļĨāđāļāđāļāļĒāđāļēāļāļāļĢāļāļāļāļĨāļļāļĄ āļĢāļ§āļĄāļāļķāļāļāļĢāļ°āđāļāđāļāļŠāļģāļāļąāļāļāđāļāđāļāļāļĩāđ:
- āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ: āļāļēāļĢāļāļąāļāļāļķāļāļāļđāđāļāļĩāļĒāđ-āļāđāļēāļāļĩāđāđāļŦāđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāļāļīāļāļāļļāļāļŠāļģāļŦāļĢāļąāļ LLM āđāļāđāļ āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāđāļāļāļēāļ°āļĢāļļāđāļ āđāļāđāļ
top_k
āđāļĨāļ°temperature
- āļāđāļāļĄāļđāļĨāļāļĩāđāđāļŦāđāļāļĢāļīāļāļāđāļĨāļ°āļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļĢāļąāļāđāļāđāļĨāļ°āļāļĢāļąāđāļ āđāļāļ·āđāļāđāļŦāđāļĄāļąāđāļāđāļāļ§āđāļēāļāļļāļāđāļāđāļĄāļļāļĄāļāļāļāļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļāļāđāļāļāļāļģāļĨāļāļāļāļ°āļāļđāļāļāļąāļāļāļķāļāđāļ§āđ - āļāļąāļ§āļāļĩāđāļ§āļąāļ: āļĄāļēāļāļĢāļāļēāļĢāđāļāļīāļāļāļĢāļīāļĄāļēāļāļāļĩāđāđāļŦāđāļāđāļāļĄāļđāļĨāđāļāļīāļāļĨāļķāļāđāļāļĩāđāļĒāļ§āļāļąāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļāļ LLM āļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāđāļāļāđāļāđāđāļāļāđāļāļāļēāļĄāļīāļāđāļāļāļāļ°āļāļĩāđāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļģāđāļāļīāļāđāļ āđāļāļĒāļāļģāđāļŠāļāļāļāđāļāļĄāļđāļĨāđāļāļīāļāļĨāļķāļāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđāļŦāļĢāļ·āļāļŦāļĨāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
- āļāļēāļĢāļāļēāļāļāļēāļĢāļāđ: āļāļēāļĢāļāļąāļāļāļīāļāļāļļāļāļāļĩāđāļŠāđāļāđāļāļĒāļąāļ LLM āđāļĨāļ°āđāļāļēāļāđāļāļļāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļ āļāļķāđāļāļāļđāļāļāļąāļāđāļāđāļāđāļāđāļāļŠāļīāđāļāļāļĢāļ°āļāļīāļĐāļāđāđāļāļĢāļđāļāđāļāļāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļāđāļāļ·āđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļāđāļāđāļĨāļ°āļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāļĩāđāļāđāļēāļĒāļāļēāļĒ
- āļĻāļīāļĨāļāļ§āļąāļāļāļļ: āļāļāļāđāļŦāļāļ·āļāļāļēāļāļāļēāļĢāļāļēāļāļāļēāļĢāļāđāđāļĨāđāļ§ MLflow āļĒāļąāļāļŠāļēāļĄāļēāļĢāļāļāļąāļāđāļāđāļāđāļāļĨāđāđāļāļēāļāđāļāļļāļāļāđāļēāļāđ āđāļāđ āđāļāđāļ āļāļēāļĢāđāļŠāļāļāļ āļēāļ āđāļĄāđāļāļĨāđāļāļāļāļāļļāļāļĢāļĄ āđāļĨāļ°āđāļāļĨāđāļāđāļāļĄāļđāļĨāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļ āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļģāđāļāļāļŠāļēāļĢāđāļāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļĨāļ°āļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļāđāļĄāđāļāļĨāđāļāđ
āļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļāļāļĩāđāļāđāļ§āļĒāđāļŦāđāđāļāđāđāļāļ§āđāļēāļāļēāļĢāđāļāđāļāļāļāļāļąāđāļāļŦāļĄāļāļāļąāļ LLM āđāļāđāļĢāļąāļāļāļēāļĢāļāļąāļāļāļķāļāļāļĒāđāļēāļāļāļīāļāļĩāļāļīāļāļąāļ āļāļģāđāļŦāđāļĄāļĩāļāļēāļĢāļāļīāļāļāļēāļĄāđāļāļ·āđāļāļŠāļēāļĒāđāļĨāļ°āļāļļāļāļ āļēāļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļŠāļģāļŦāļĢāļąāļāđāļĄāđāļāļĨāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄâ
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĨāļāļāļ LLM
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāļģāđāļŠāļāļāļāļ§āļēāļĄāļāđāļēāļāļēāļĒāļāļĩāđāđāļĄāđāđāļŦāļĄāļ·āļāļāđāļāļĢāđāļāļ·āđāļāļāļāļēāļāļāļĢāļĢāļĄāļāļēāļāļīāļāļāļāļāļēāļĢāļāļģāđāļāļīāļāđāļĨāļ°āļāļēāļĢāļāļēāļāļāļ§āļēāļĄāļāļĢāļīāļāļāļ·āđāļāļāļēāļāđāļāļĩāļĒāļāļāđāļāđāļāļĩāļĒāļ§ MLflow āļāļģāđāļŦāđāļŠāļīāđāļāļāļĩāđāļāđāļēāļĒāļāļķāđāļāļāđāļ§āļĒāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĢāļ°āđāļĄāļīāļāļāļĨāđāļāļāļēāļ°āļāļēāļāļāļĩāđāļāļāļāđāļāļāļĄāļēāļŠāļģāļŦāļĢāļąāļ LLM āļāļļāļāļŠāļĄāļāļąāļāļīāļāļĩāđāļŠāļģāļāļąāļ āđāļāđāđāļāđ :
- āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļāļāļāļģāļĨāļāļāļāđāļāļāļāļĢāļ°āļŠāļāļāđ: āļĢāļāļāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāļĢāļ°āđāļ āļāļāđāļēāļāđ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāđāļĄāđāļāļĨ MLflow pyfunc, URI āļāļĩāđāļāļĩāđāđāļāļĒāļąāļāđāļĄāđāļāļĨ MLflow āļāļĩāđāļĨāļāļāļ°āđāļāļĩāļĒāļāđāļĨāđāļ§ āļŦāļĢāļ·āļ Python āđāļāđ āļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāđāļāđāļāļķāđāļāđāļāđāļāļāļąāļ§āđāļāļāļāļāļāđāļĄāđāļāļĨāļāļāļāļāļļāļ
- āđāļĄāļāļĢāļīāļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ: āđāļŠāļāļāļāđāļ§āļāļāļāļāļāļąāļ§āļ§āļąāļāļāļĩāđāļāļĢāļąāļāđāļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļĢāļ§āļĄāļāļķāļāļāļąāļ§āļ§āļąāļāļāļĩāđāļāļķāđāļāļāļąāļāđāļĄāđāļāļĨ SaaS (āđāļāđāļ āļāļ§āļēāļĄāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļāļāļāļģāļāļāļ) āđāļĨāļ°āļāļąāļ§āļ§āļąāļāļāļēāļĄāļāļąāļāļāđāļāļąāļ (āđāļāđāļ ROUGE, Flesch Kincaid)
- āļāļāļĨāđāļĨāļāļāļąāļāđāļĄāļāļĢāļīāļāļāļĩāđāļāļģāļŦāļāļāđāļ§āđāļĨāđāļ§āļāļŦāļāđāļē: āļāļķāđāļāļāļĒāļđāđāļāļąāļāļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ āđāļāđāļ āļāļēāļĢāļāļāļāļāļģāļāļēāļĄāļŦāļĢāļ·āļāļāļēāļĢāļŠāļĢāļļāļāļāđāļāļāļ§āļēāļĄ MLflow āļāļąāļāđāļāļĢāļĩāļĒāļĄāļāļąāļ§āļ§āļąāļāļāļĩāđāļāļģāļŦāļāļāđāļ§āđāļĨāđāļ§āļāļŦāļāđāļēāđāļāļ·āđāļāļāļģāđāļŦāđāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāđāļēāļĒāļāļķāđāļ
- āļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāļāļĢāļīāļāđāļāļāļāļģāļŦāļāļāđāļāļ: āļāđāļ§āļĒāđāļŦāđāļāļđāđāđāļāđāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļĨāļ°āđāļāđāļŦāļāđāļ§āļĒāļ§āļąāļāļāļĩāđāļāļģāļŦāļāļāđāļāļāđāļāļ·āđāļāđāļŦāđāđāļŦāļĄāļēāļ°āļāļąāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļāļāļēāļ° āļāđāļ§āļĒāđāļāļīāđāļĄāļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļāđāļĨāļ°āļāļ§āļēāļĄāļĨāļķāļāļāļāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļāļāļāļģāļĨāļāļ
- āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāđāļ§āļĒāļāļļāļāļāđāļāļĄāļđāļĨāđāļāļāļāļāļāļĩāđ: āđāļāļīāļāđāļāđāļāļēāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļļāļāļāđāļāļĄāļđāļĨāđāļāļāļāļāļāļĩāđāđāļāļĒāđāļĄāđāļāđāļāļāļĢāļ°āļāļļāđāļāļāļāļģāļĨāļāļ āļāļķāđāļāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§āđāļāļĒāđāļĄāđāļāđāļāļāđāļĢāļĩāļĒāļāđāļāđāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļāļģāļĨāļāļāļāļĩāļāļāļĢāļąāđāļ
āļāļēāļĢāļāļĢāļąāļāđāļāđāđāļĨāļ°āļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢ
MLflow āļĒāļąāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļāđāđāļĨāļ°āļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢ LLM āđāļāđāļāļĒāđāļēāļāļĢāļēāļāļĢāļ·āđāļ:
- āđāļāļīāļĢāđāļāđāļ§āļāļĢāđāļāļēāļĢāļāļĢāļąāļāđāļāđ MLflow: āļāļģāļŦāļāđāļēāļāļĩāđāđāļāđāļāļāļīāļāđāļāļāļĢāđāđāļāļāđāļāļāļĢāļ§āļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāļāļāļāļąāļāļāļđāđāđāļŦāđāļāļĢāļīāļāļēāļĢ LLM āļŦāļĨāļēāļĒāļĢāļēāļĒ āļāđāļ§āļĒāđāļŦāđāļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢāļāđāļēāļĒāļāļķāđāļ āļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļąāļāļĢāļāļāļāļĒāđāļēāļāļāļĨāļāļāļ āļąāļĒ āđāļĨāļ°āļĄāļāļāļāļĢāļ°āļŠāļāļāļēāļĢāļāđ API āļāļĩāđāļŠāļāļāļāļĨāđāļāļāļāļąāļ āđāļāļīāļĢāđāļāđāļ§āļāļĢāđāļāļĩāđāļĢāļāļāļĢāļąāļāđāļĄāđāļāļĨāļāļ·āđāļāļāļēāļāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļāļēāļāļāļđāđāļāļģāļŦāļāđāļēāļĒ SaaS āļĒāļāļāļāļīāļĒāļĄ āļĢāļ§āļĄāļāļķāļāđāļĄāđāļāļĨāļāļĩāđāđāļŪāļŠāļāđāđāļāļ
- āļāļļāļāļŠāļīāđāļāļŠāļļāļāđāļāļāļĢāļ§āļĄ: āļāļģāļāļ§āļĒāļāļ§āļēāļĄāļŠāļ°āļāļ§āļāđāļāļāļēāļĢāļŠāļĨāļąāļāļĢāļ°āļŦāļ§āđāļēāļāļāļđāđāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāđāļāļĒāđāļēāļāļāđāļēāļĒāļāļēāļĒāđāļāļĒāđāļĄāđāļāđāļāļāđāļāļĨāļĩāđāļĒāļāļĢāļŦāļąāļŠ āļĨāļāđāļ§āļĨāļēāļŦāļĒāļļāļāļāļģāļāļēāļāđāļĨāļ°āđāļāļīāđāļĄāļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļ
- āļĄāļļāļĄāļĄāļāļāļāļĨāļĨāļąāļāļāđāđāļāļāļĢāļ§āļĄ: āđāļŦāđāļāļĨāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ āļāļķāđāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļāđāļāđāđāļāļĒāļāļĢāļāđāļāđāļāđāļāļŦāļĢāļ·āļāļāđāļēāļ MLflow UI āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāđāļāļĒāļĨāļ°āđāļāļĩāļĒāļ
MLflow āđāļāđāļāļāļļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļĨāļ°āļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ āļāļģāđāļŦāđāđāļāđāļāļāļĢāļąāļāļĒāđāļŠāļīāļāļāļąāļāļĨāđāļģāļāđāļēāļŠāļģāļŦāļĢāļąāļāļ§āļīāļĻāļ§āļāļĢāđāļĨāļ°āļāļąāļāļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāļāđāļāļĄāļđāļĨāļāļĩāđāļāļģāļāļēāļāļāļąāļāđāļĄāđāļāļĨ NLP āļāļąāđāļāļŠāļđāļ
āļāļēāļĢāļāļąāđāļāļāđāļēāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļāļāļāļļāļ
āļāđāļāļāļāļĩāđāđāļĢāļēāļāļ°āđāļāļēāļ°āļĨāļķāļāļāļēāļĢāļāļīāļāļāļēāļĄ LLM āļāđāļ§āļĒ MLflow āđāļĢāļēāļĄāļēāļāļąāđāļāļāđāļēāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāļāļąāļāļāļēāļāļāļāđāļĢāļēāļāļąāļāļāđāļāļ āđāļĢāļēāļāļ°āļāđāļāļāļāļīāļāļāļąāđāļ MLflow āđāļĨāļ°āđāļĨāļāļĢāļēāļĢāļĩāļāļĩāļĒāđāļāļ·āđāļāđ āļāļĩāļāļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢ:
pip install mlflow>=2.8.1 pip install openai pip install chromadb==0.4.15 pip install langchain==0.0.348 pip install tiktoken pip install 'mlflow[genai]' pip install databricks-sdk --upgrade
āļŦāļĨāļąāļāļāļēāļĢāļāļīāļāļāļąāđāļ āđāļāđāļāđāļāļ§āļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāđāļāļāļēāļĢāļĢāļĩāļŠāļāļēāļĢāđāļāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ Python āđāļāļ·āđāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāđāļĨāļāļĢāļēāļĢāļĩāļāļąāđāļāļŦāļĄāļāđāļāđāļĢāļąāļāļāļēāļĢāđāļŦāļĨāļāļāļĒāđāļēāļāļāļđāļāļāđāļāļ āđāļāļŠāļĄāļļāļāļāļąāļāļāļķāļ Jupyter āļāļļāļāļŠāļēāļĄāļēāļĢāļāđāļāđ:
import mlflow import chromadb print(f"MLflow version: {mlflow.__version__}") print(f"ChromaDB version: {chromadb.__version__}")
āļāļĩāđāļāļ°āđāļāđāļāļāļēāļĢāļĒāļ·āļāļĒāļąāļāđāļ§āļāļĢāđāļāļąāļāļāļāļāđāļĨāļāļĢāļēāļĢāļĩāļŦāļĨāļąāļāļāļĩāđāđāļĢāļēāļāļ°āđāļāđ
āļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļīāļāļāļēāļĄ LLM āļāļāļ MLflow
āļĢāļ°āļāļāļāļīāļāļāļēāļĄ LLM āļāļāļ MLflow āļŠāļĢāđāļēāļāļāļķāđāļāļāļēāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļīāļāļāļēāļĄāļāļĩāđāļĄāļĩāļāļĒāļđāđ āđāļāļĒāđāļāļīāđāļĄāļāļļāļāļŠāļĄāļāļąāļāļīāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļĒāđāļāļāļēāļ°āļŠāļģāļŦāļĢāļąāļāļĨāļąāļāļĐāļāļ°āđāļāļāļēāļ°āļāļāļ LLM āļĄāļēāļāļđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļŠāļģāļāļąāļāļāļąāļ:
āļāļēāļĢāļ§āļīāđāļāđāļĨāļ°āļāļēāļĢāļāļāļĨāļāļ
āđāļ MLflow âāļāļēāļĢāļĢāļąāļâ āļŦāļĄāļēāļĒāļāļķāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļĢāļąāđāļāđāļāļĩāļĒāļ§āļāļāļāđāļāđāļāđāļĄāđāļāļĨāļāļāļāļāļļāļ āđāļāļāļāļ°āļāļĩāđ âāļāļēāļĢāļāļāļĨāļāļâ āļāļ·āļāļāļāļĨāđāļĨāļāļāļąāļāļāļāļāļāļēāļĢāļĢāļąāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļ āļŠāļģāļŦāļĢāļąāļ LLM āļāļēāļĢāļĢāļąāļāļāļēāļāđāļŠāļāļāļāļķāļāļāļēāļĢāļŠāļ·āļāļāđāļāđāļāļĩāļĒāļ§āļŦāļĢāļ·āļāļāļļāļāļāļāļāļāļĢāđāļāļĄāļāđāļāļĩāđāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĒāđāļĄāđāļāļĨ
āļāļāļāđāļāļĢāļ°āļāļāļāļāļēāļĢāļāļīāļāļāļēāļĄāļāļĩāđāļŠāļģāļāļąāļ
- āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ: āļāļĩāđāļāļ·āļāļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļīāļāļāļļāļāļŠāļģāļŦāļĢāļąāļ LLM āļāļāļāļāļļāļ āđāļāđāļ āļāļļāļāļŦāļ āļđāļĄāļī top_k āļŦāļĢāļ·āļ max_tokens āļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļķāļāļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāđāļāļĒāđāļāđ
mlflow.log_param()
ormlflow.log_params()
. - āļāļąāļ§āļāļĩāđāļ§āļąāļ: āļāļēāļĢāļ§āļąāļāļāļĨāđāļāļīāļāļāļĢāļīāļĄāļēāļāļāļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļ LLM āđāļāđāļ āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ āđāļ§āļĨāļēāđāļāļ āļŦāļĢāļ·āļāļāļ°āđāļāļāļāļĩāđāļāļģāļŦāļāļāđāļāļ āđāļāđ
mlflow.log_metric()
ormlflow.log_metrics()
āđāļāļ·āđāļāļāļīāļāļāļēāļĄāļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđ - āļāļēāļĢāļāļēāļāļāļēāļĢāļāđ: āļŠāļģāļŦāļĢāļąāļ LLM āļāļēāļĢāļāļąāļāļāļķāļāļāļąāđāļāļāļĢāļāļĄāļāđāļāļīāļāļāļļāļāđāļĨāļ°āđāļāļēāļāđāļāļļāļāļāļāļāđāļĄāđāļāļĨāđāļāđāļāļŠāļīāđāļāļŠāļģāļāļąāļ MLflow āļāļąāļāđāļāđāļāļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļāļŠāļīāđāļāļāļĢāļ°āļāļīāļĐāļāđāđāļāļĢāļđāļāđāļāļ CSV āđāļāļĒāđāļāđ
mlflow.log_table()
. - āļĻāļīāļĨāļāļ§āļąāļāļāļļ: āđāļāļĨāđāļŦāļĢāļ·āļāļāđāļāļĄāļđāļĨāđāļāļīāđāļĄāđāļāļīāļĄāđāļāđ āļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļāļāļēāļĢāļĢāļąāļ LLM āļāļāļāļāļļāļ āđāļāđāļ āļāļļāļāļāļĢāļ§āļāļŠāļāļāđāļĄāđāļāļĨ āļāļēāļĢāđāļŠāļāļāļ āļēāļ āļŦāļĢāļ·āļāļāļąāļ§āļāļĒāđāļēāļāļāļļāļāļāđāļāļĄāļđāļĨ āđāļāđ
mlflow.log_artifact()
āđāļāļ·āđāļāļāļąāļāđāļāđāļāļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđ
āļĄāļēāļāļđāļāļąāļ§āļāļĒāđāļēāļāļāļ·āđāļāļāļēāļāļāļāļāļāļēāļĢāļāļąāļāļāļķāļāļāļēāļĢāļĢāļąāļ LLM:
āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāļŠāļēāļāļīāļāļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāļāļēāļĢāļāļąāļāļāļķāļ āļŦāļāđāļ§āļĒāļ§āļąāļ āđāļĨāļ°āļāļīāļāļāļļāļ/āđāļāļēāļāđāļāļļāļāđāļāđāļāļŠāđāļ§āļāļāļāļāļāļēāļĢāļēāļ
import mlflow import openai def query_llm(prompt, max_tokens=100): response = openai.Completion.create( engine="text-davinci-002", prompt=prompt, max_tokens=max_tokens ) return response.choices[0].text.strip() with mlflow.start_run(): prompt = "Explain the concept of machine learning in simple terms." # Log parameters mlflow.log_param("model", "text-davinci-002") mlflow.log_param("max_tokens", 100) # Query the LLM and log the result result = query_llm(prompt) mlflow.log_metric("response_length", len(result)) # Log the prompt and response mlflow.log_table("prompt_responses", {"prompt": [prompt], "response": [result]}) print(f"Response: {result}")
āļāļēāļĢāļāļĢāļąāļāđāļāđ LLM āļāđāļ§āļĒ MLflow
MLflow āļĄāļāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļĢāļāļāļĨāļąāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļāđ LLM āļāļģāđāļŦāđāļāđāļēāļĒāļāđāļāļāļēāļĢāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļĄāđāļāļĨāļāļāļāļāļļāļāđāļāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāđāļāđāļāļēāļāļāļĢāļīāļ āđāļĢāļēāļĄāļēāļŠāļģāļĢāļ§āļāļ§āļīāļāļĩāļāļēāļĢāļāļĢāļąāļāđāļāđ LLM āđāļāļĒāđāļāđāļāļļāļāļŠāļĄāļāļąāļāļīāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāļ MLflow āļāļąāļāļāļĩāļāļ§āđāļē
āļāļēāļĢāļŠāļĢāđāļēāļāļāļļāļāļŠāļīāđāļāļŠāļļāļ
āļāļąāđāļāđāļĢāļ āđāļĢāļēāļāļ°āļŠāļĢāđāļēāļāļāļģāđāļŦāļāđāļāļāđāļāļĄāļđāļĨāļŠāļģāļŦāļĢāļąāļ LLM āļāļāļāđāļĢāļēāđāļāļĒāđāļāđāđāļāļĨāđāļāļāļāđāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāļ MLflow:
import mlflow from mlflow.deployments import get_deploy_client # Initialize the deployment client client = get_deploy_client("databricks") # Define the endpoint configuration endpoint_name = "llm-endpoint" endpoint_config = { "served_entities": [{ "name": "gpt-model", "external_model": { "name": "gpt-3.5-turbo", "provider": "openai", "task": "llm/v1/completions", "openai_config": { "openai_api_type": "azure", "openai_api_key": "{{secrets/scope/openai_api_key}}", "openai_api_base": "{{secrets/scope/openai_api_base}}", "openai_deployment_name": "gpt-35-turbo", "openai_api_version": "2023-05-15", }, }, }], } # Create the endpoint client.create_endpoint(name=endpoint_name, config=endpoint_config)
āđāļāđāļāļāļĩāđāļāļąāđāļāļāđāļēāļāļģāđāļŦāļāđāļāļāđāļāļĄāļđāļĨāļŠāļģāļŦāļĢāļąāļāļĢāļļāđāļ GPT-3.5-turbo āđāļāļĒāđāļāđ Azure OpenAI āļŠāļąāļāđāļāļāļāļēāļĢāđāļāđāļāļ§āļēāļĄāļĨāļąāļāļāļāļ Databricks āđāļāļ·āđāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĩāļĒāđ API āļāļĩāđāļāļĨāļāļāļ āļąāļĒ
āļāļēāļĢāļāļāļŠāļāļāļāļļāļāļŠāļīāđāļāļŠāļļāļ
āđāļĄāļ·āđāļāļŠāļĢāđāļēāļāļāļļāļāļŠāļīāđāļāļŠāļļāļāđāļĨāđāļ§ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļŠāļāļāđāļāđ:
<div class="relative flex flex-col rounded-lg"> response = client.predict( endpoint=endpoint_name, inputs={"prompt": "Explain the concept of neural networks briefly.","max_tokens": 100,},) print(response)
āļŠāļīāđāļāļāļĩāđāļāļ°āļŠāđāļāļāđāļāļāļ§āļēāļĄāļāļĢāđāļāļĄāļāđāđāļāļĒāļąāļāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļąāļāđāļāđāļāļāļāđāļĢāļēāđāļĨāļ°āļŠāđāļāļāļ·āļāļāļēāļĢāļāļāļāļāļĨāļąāļāļāļĩāđāļŠāļĢāđāļēāļāļāļķāđāļ
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāđāļ§āļĒ MLflow
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļāđāļāļŠāļīāđāļāļŠāļģāļāļąāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļāļĪāļāļīāļāļĢāļĢāļĄāļāļāļ LLM āļāļāļāļāļļāļ MLflow āļĄāļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļĢāļ§āļĄāļāļķāļāļāļąāļ§āļ§āļąāļāļāļąāđāļāđāļāļāļąāļ§āđāļĨāļ°āđāļāļāļāļģāļŦāļāļāđāļāļ
āđāļāļĢāļĩāļĒāļĄ LLM āļāļāļāļāļļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĨ
āđāļāļ·āđāļāļāļĢāļ°āđāļĄāļīāļ LLM āļāļāļāļāļļāļāļāđāļ§āļĒ mlflow.evaluate()
āđāļĄāđāļāļĨāļāļāļāļāļļāļāļāđāļāļāļāļĒāļđāđāđāļāļĢāļđāļāđāļāļāđāļāļĢāļđāļāđāļāļāļŦāļāļķāđāļāļāđāļāđāļāļāļĩāđ:
- An
mlflow.pyfunc.PyFuncModel
āļāļīāļāļŠāđāļāļāļāđāļŦāļĢāļ·āļ URI āļāļĩāđāļāļĩāđāđāļāļĒāļąāļāđāļĄāđāļāļĨ MLflow āļāļĩāđāļāļąāļāļāļķāļāđāļ§āđ - āļāļąāļāļāđāļāļąāļ Python āļāļĩāđāļĢāļąāļāļāļīāļāļāļļāļāđāļĨāļ°āđāļāļēāļāđāļāļļāļāļŠāļāļĢāļīāļāđāļāđāļāļŠāļāļĢāļīāļāđāļāļĩāļĒāļ§
- URI āļāļĨāļēāļĒāļāļēāļāļāļēāļĢāļāļĢāļąāļāđāļāđ MLflow
- āļāļļāļ
model=None
āđāļĨāļ°āļĢāļ§āļĄāļāļĨāļĨāļąāļāļāđāļāļāļāđāļāļāļāļģāļĨāļāļāđāļ§āđāđāļāļāđāļāļĄāļđāļĨāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ
āļĨāļāļāļāļđāļāļąāļ§āļāļĒāđāļēāļāđāļāļĒāđāļāđāđāļĄāđāļāļĨ MLflow āļāļĩāđāļāļąāļāļāļķāļāđāļ§āđ:
import mlflow import openai with mlflow.start_run(): system_prompt = "Answer the following question concisely." logged_model_info = mlflow.openai.log_model( model="gpt-3.5-turbo", task=openai.chat.completions, artifact_path="model", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": "{question}"}, ], ) # Prepare evaluation data eval_data = pd.DataFrame({ "question": ["What is machine learning?", "Explain neural networks."], "ground_truth": [ "Machine learning is a subset of AI that enables systems to learn and improve from experience without explicit programming.", "Neural networks are computing systems inspired by biological neural networks, consisting of interconnected nodes that process and transmit information." ] }) # Evaluate the model results = mlflow.evaluate( logged_model_info.model_uri, eval_data, targets="ground_truth", model_type="question-answering", ) print(f"Evaluation metrics: {results.metrics}")
āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāļāļ°āļāļąāļāļāļķāļāđāļĄāđāļāļĨ OpenAI āđāļāļĢāļĩāļĒāļĄāļāđāļāļĄāļđāļĨāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ āļāļēāļāļāļąāđāļāļāļĢāļ°āđāļĄāļīāļāđāļĄāđāļāļĨāđāļāļĒāđāļāđāļāļąāļ§āļ§āļąāļāđāļāļāļąāļ§āļāļāļ MLflow āļŠāļģāļŦāļĢāļąāļāļāļēāļāļāļāļāļāļģāļāļēāļĄ
āļāļąāļ§āļāļĩāđāļ§āļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĨāļāļĩāđāļāļģāļŦāļāļāđāļāļ
MLflow āļāđāļ§āļĒāđāļŦāđāļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļāļąāļ§āļāļĩāđāļ§āļąāļāļāļĩāđāļāļģāļŦāļāļāđāļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāđāļāđāļāļāļĩāđāļāļ·āļāļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļĄāļāļĢāļīāļāļāļĩāđāļāļģāļŦāļāļāđāļāļāđāļāļ·āđāļāļāļĢāļ°āđāļĄāļīāļāļāļ§āļēāļĄāđāļāđāļāļĄāļ·āļāļāļēāļāļĩāļāļāļāļāļāļēāļĢāļāļāļāļāļĨāļąāļ
from mlflow.metrics.genai import EvaluationExample, make_genai_metric professionalism = make_genai_metric( name="professionalism", definition="Measure of formal and appropriate communication style.", grading_prompt=( "Score the professionalism of the answer on a scale of 0-4:\n" "0: Extremely casual or inappropriate\n" "1: Casual but respectful\n" "2: Moderately formal\n" "3: Professional and appropriate\n" "4: Highly formal and expertly crafted" ), examples=[ EvaluationExample( input="What is MLflow?", output="MLflow is like your friendly neighborhood toolkit for managing ML projects. It's super cool!", score=1, justification="The response is casual and uses informal language." ), EvaluationExample( input="What is MLflow?", output="MLflow is an open-source platform for the machine learning lifecycle, including experimentation, reproducibility, and deployment.", score=4, justification="The response is formal, concise, and professionally worded." ) ], model="openai:/gpt-3.5-turbo-16k", parameters={"temperature": 0.0}, aggregations=["mean", "variance"], greater_is_better=True, ) # Use the custom metric in evaluation results = mlflow.evaluate( logged_model_info.model_uri, eval_data, targets="ground_truth", model_type="question-answering", extra_metrics=[professionalism] ) print(f"Professionalism score: {results.metrics['professionalism_mean']}")
āļāļąāļ§āļ§āļąāļāđāļāļāļāļģāļŦāļāļāđāļāļāļāļĩāđāđāļāđ GPT-3.5-turbo āđāļāļ·āđāļāđāļŦāđāļāļ°āđāļāļāļāļ§āļēāļĄāđāļāđāļāļĄāļ·āļāļāļēāļāļĩāļāļāļāļāļāļēāļĢāļāļāļāļāļĨāļąāļ āļāļķāđāļāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļ§āđāļēāļāļļāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļ LLM āđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļāđāļāļĒāđāļēāļāđāļĢ
āđāļāļāļāļīāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāļąāđāļāļŠāļđāļ
āđāļĄāļ·āđāļ LLM āļĄāļĩāļāļ§āļēāļĄāļāļąāļāļāđāļāļāļĄāļēāļāļāļķāđāļ āđāļāļāļāļīāļāđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāđāđāļāđāļāļāļąāļ āđāļĢāļēāļĄāļēāļŠāļģāļĢāļ§āļāļ§āļīāļāļĩāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļąāđāļāļŠāļđāļāđāļāļĒāđāļāđ MLflow āļāļąāļāļāļĩāļāļ§āđāļē
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļāļķāļāļāđāļāļĄāļđāļĨ-āđāļŠāļĢāļīāļĄ (RAG)
āļĢāļ°āļāļ RAG āļāļŠāļĄāļāļŠāļēāļāļāļĨāļąāļāļāļāļāđāļāļāļāļģāļĨāļāļāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āđāļāļāļāļģāļĨāļāļāđāļāļīāļāļāļģāđāļāļīāļ āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļĢāļ°āļāļ RAG āļāļģāđāļāđāļāļāđāļāļāļĄāļĩāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļąāđāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļāļēāļĢāļŠāļĢāđāļēāļ āļāđāļāđāļāļāļĩāđāļāļ·āļāļ§āļīāļāļĩāļāļĩāđāļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļąāđāļāļāđāļēāļĢāļ°āļāļ RAG āđāļĨāļ°āļāļĢāļ°āđāļĄāļīāļāļāļĨāđāļāļĒāđāļāđ MLflow:
from langchain.document_loaders import WebBaseLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.llms import OpenAI # Load and preprocess documents loader = WebBaseLoader(["https://mlflow.org/docs/latest/index.html"]) documents = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) texts = text_splitter.split_documents(documents) # Create vector store embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents(texts, embeddings) # Create RAG chain llm = OpenAI(temperature=0) qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever(), return_source_documents=True ) # Evaluation function def evaluate_rag(question): result = qa_chain({"query": question}) return result["result"], [doc.page_content for doc in result["source_documents"]] # Prepare evaluation data eval_questions = [ "What is MLflow?", "How does MLflow handle experiment tracking?", "What are the main components of MLflow?" ] # Evaluate using MLflow with mlflow.start_run(): for question in eval_questions: answer, sources = evaluate_rag(question) mlflow.log_param(f"question", question) mlflow.log_metric("num_sources", len(sources)) mlflow.log_text(answer, f"answer_{question}.txt") for i, source in enumerate(sources): mlflow.log_text(source, f"source_{question}_{i}.txt") # Log custom metrics mlflow.log_metric("avg_sources_per_question", sum(len(evaluate_rag(q)[1]) for q in eval_questions) / len(eval_questions))
āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāļāļąāđāļāļāđāļēāļĢāļ°āļāļ RAG āđāļāļĒāđāļāđ LangChain āđāļĨāļ° Chroma āļāļēāļāļāļąāđāļāļāļĢāļ°āđāļĄāļīāļāđāļāļĒāļāļąāļāļāļķāļāļāļģāļāļēāļĄ āļāļģāļāļāļ āđāļŦāļĨāđāļāļāļĩāđāļĄāļēāļāļĩāđāļāļķāļāļāđāļāļĄāļđāļĨ āđāļĨāļ°āļāļąāļ§āļ§āļąāļāļāļĩāđāļāļģāļŦāļāļāđāļāļāļĨāļāđāļ MLflow
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĨāļĒāļļāļāļāđāđāļāļ Chunking
āļ§āļīāļāļĩāļāļĩāđāļāļļāļāļāļąāļāļāļĨāļļāđāļĄāđāļāļāļŠāļēāļĢāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāļĨāļāļĢāļ°āļāļāļāļĒāđāļēāļāļĄāļēāļāļāđāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļ RAG MLflow āļŠāļēāļĄāļēāļĢāļāļāđāļ§āļĒāļāļļāļāļāļĢāļ°āđāļĄāļīāļāļāļĨāļĒāļļāļāļāđāļāļēāļĢāđāļĒāļāļāļīāđāļāļŠāđāļ§āļāļāđāļēāļāđ āđāļāđ:
import mlflow from langchain.text_splitter import CharacterTextSplitter, TokenTextSplitter def evaluate_chunking_strategy(documents, chunk_size, chunk_overlap, splitter_class): splitter = splitter_class(chunk_size=chunk_size, chunk_overlap=chunk_overlap) chunks = splitter.split_documents(documents) with mlflow.start_run(): mlflow.log_param("chunk_size", chunk_size) mlflow.log_param("chunk_overlap", chunk_overlap) mlflow.log_param("splitter_class", splitter_class.__name__) mlflow.log_metric("num_chunks", len(chunks)) mlflow.log_metric("avg_chunk_length", sum(len(chunk.page_content) for chunk in chunks) / len(chunks)) # Evaluate retrieval performance (simplified) correct_retrievals = sum(1 for _ in range(100) if simulate_retrieval(chunks)) mlflow.log_metric("retrieval_accuracy", correct_retrievals / 100) # Evaluate different strategies for chunk_size in [500, 1000, 1500]: for chunk_overlap in [0, 50, 100]: for splitter_class in [CharacterTextSplitter, TokenTextSplitter]: evaluate_chunking_strategy(documents, chunk_size, chunk_overlap, splitter_class) # Compare results best_run = mlflow.search_runs(order_by=["metrics.retrieval_accuracy DESC"]).iloc[0] print(f"Best chunking strategy: {best_run['params.splitter_class']} with size {best_run['params.chunk_size']} and overlap {best_run['params.chunk_overlap']}")
āļŠāļāļĢāļīāļāļāđāļāļĩāđāļāļ°āļāļĢāļ°āđāļĄāļīāļāļāļēāļĢāļāļŠāļĄāļāļŠāļēāļāļĢāļ°āļŦāļ§āđāļēāļāļāļāļēāļāļāļīāđāļ āļāļēāļĢāļāļąāļāļāđāļāļ āđāļĨāļ°āļ§āļīāļāļĩāļāļēāļĢāđāļĒāļ āđāļāļĒāļāļąāļāļāļķāļāļāļĨāļĨāļąāļāļāđāļĨāļāđāļ MLflow āđāļāļ·āđāļāļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļĩāđāļāđāļēāļĒāļāļēāļĒ
āļāļēāļĢāđāļŠāļāļāļ āļēāļāļāļĨāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM
MLflow āļāļģāđāļŠāļāļāļ§āļīāļāļĩāļāđāļēāļāđ āđāļāļāļēāļĢāđāļŠāļāļāļ āļēāļāļāļĨāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ LLM āļāļāļāļāļļāļ āļāļĩāđāļāļ·āļāđāļāļāļāļīāļāļāļēāļāļāļĢāļ°āļāļēāļĢ:
āļāļēāļĢāđāļāđ MLflow UI
āļŦāļĨāļąāļāļāļēāļāļāļģāđāļāļīāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļĨāđāļ§ āļāļļāļāļŠāļēāļĄāļēāļĢāļāđāļāđ MLflow UI āđāļāļ·āđāļāđāļŠāļāļāļ āļēāļāļāļĨāļĨāļąāļāļāđāđāļāđ:
- āđāļĢāļīāđāļĄ MLflow UI:
mlflow ui
- āđāļāļīāļāđāļ§āđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāđāļĨāļ°āđāļāļāļĩāđ
http://localhost:5000
- āđāļĨāļ·āļāļāļāļēāļĢāļāļāļŠāļāļāļāļāļāļāļļāļāđāļĨāļ°āđāļĢāļĩāļĒāļāđāļāđāđāļāļ·āđāļāļāļđāđāļĄāļāļĢāļīāļ āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ āđāļĨāļ°āļāļēāļĢāđāļāļīāđāļāļāļāđ
āļāļēāļĢāđāļŠāļāļāļ āļēāļāđāļāļāļāļģāļŦāļāļāđāļāļ
āļāļļāļāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļēāļĢāđāļŠāļāļāļ āļēāļāļāļĨāļĨāļąāļāļāđāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļāļāļāļļāļāđāļāļāļāļģāļŦāļāļāđāļāļāđāļāđāđāļāļĒāđāļāđāđāļĨāļāļĢāļēāļĢāļĩ āđāļāđāļ Matplotlib āļŦāļĢāļ·āļ Plotly āļāļēāļāļāļąāđāļāļāļąāļāļāļķāļāđāļāđāļāļāļēāļĢāđāļāļīāđāļāļāļāđ:
import matplotlib.pyplot as plt import mlflow def plot_metric_comparison(metric_name, run_ids): plt.figure(figsize=(10, 6)) for run_id in run_ids: run = mlflow.get_run(run_id) metric_values = mlflow.get_metric_history(run_id, metric_name) plt.plot([m.step for m in metric_values], [m.value for m in metric_values], label=run.data.tags.get("mlflow.runName", run_id)) plt.title(f"Comparison of {metric_name}") plt.xlabel("Step") plt.ylabel(metric_name) plt.legend() # Save and log the plot plt.savefig(f"{metric_name}_comparison.png") mlflow.log_artifact(f"{metric_name}_comparison.png") # Usage with mlflow.start_run(): plot_metric_comparison("answer_relevance", ["run_id_1", "run_id_2", "run_id_3"])
āļāļąāļāļāđāļāļąāļāļāļĩāđāļŠāļĢāđāļēāļāđāļŠāđāļāļĨāļāļāļļāļāđāļāļ·āđāļāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļŦāļāđāļ§āļĒāļ§āļąāļāđāļāļāļēāļ°āļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļ§āļīāđāļāļŦāļĨāļēāļĒāļĢāļāļ āđāļĨāļ°āļāļąāļāļāļķāļāđāļāđāļāļŠāļīāđāļāļāļĢāļ°āļāļīāļĐāļāđ
āļāļēāļāđāļĨāļ·āļāļāļāļ·āđāļāļŠāļģāļŦāļĢāļąāļ Open Source MLflow
āļĄāļĩāļāļēāļāđāļĨāļ·āļāļāļĄāļēāļāļĄāļēāļĒāļŠāļģāļŦāļĢāļąāļāđāļāđāļāđāļāļāļāļĢāđāļŠ āļĄ.āļĨ.āđāļāļĨāļ§āđ āļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļēāļĢāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāđāļĄāļāļāļĩāļāđāļĨāļīāļĢāđāļāļāļīāļ āđāļāļĒāđāļāđāļĨāļ°āđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļģāđāļŠāļāļāļāļĩāđāļāļāļĢāđāđāļĨāļ°āļāļēāļĢāļāļŠāļēāļāļĢāļ§āļĄāļāļĩāđāđāļāđāļāđāļāļāļĨāļąāļāļĐāļāđ
āļāļąāļāļāļēāļĢ MLflow āđāļāļĒ Databricks
āļāļąāļāļāļēāļĢ MLflow āđāļŪāļŠāļāđāđāļāļĒ āļāļīāļāļāđāļāļĄāļđāļĨāļĄāļāļāļāļąāļāļāđāļāļąāļāļāļēāļĢāļāļģāļāļēāļāļŦāļĨāļąāļāļāļāļ MLflow āđāļāļāđāļāđāļāđāļāļāļāļĢāđāļŠ āđāļāđāļĄāļēāļāļĢāđāļāļĄāļŠāļīāļāļāļīāļāļĢāļ°āđāļĒāļāļāđāđāļāļīāđāļĄāđāļāļīāļĄ āđāļāđāļ āļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢāļāļĒāđāļēāļāļĢāļēāļāļĢāļ·āđāļāļāļąāļāļĢāļ°āļāļāļāļīāđāļ§āļĻāļāļāļ Databricks āļāļļāļāļŠāļĄāļāļąāļāļīāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļāļąāđāļāļŠāļđāļ āđāļĨāļ°āđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢ āļāļģāđāļŦāđāđāļāđāļāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļĒāļāļāđāļĒāļĩāđāļĒāļĄāļŠāļģāļŦāļĢāļąāļāļāļāļāđāļāļĢāļāļĩāđāļāđāļāļāļāļēāļĢāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļāļĩāđāđāļāđāļāđāļāļĢāđāļ
āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ Azure
āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ Azure āļāļģāđāļŠāļāļāđāļāļĨāļđāļāļąāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāđāļāļ end-to-end āļāļāđāļāļĨāļāļāļāļĢāđāļĄāļāļĨāļēāļ§āļāđ Azure āļāļāļ Microsoft āđāļāļĒāđāļŦāđāļāļ§āļēāļĄāđāļāđāļēāļāļąāļāđāļāđāļāļąāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļ MLflow āđāļāđāļ āļāļēāļĢāļĨāļāļāļ°āđāļāļĩāļĒāļāđāļĄāđāļāļĨāđāļĨāļ°āļāļąāļ§āļāļīāļāļāļēāļĄāļāļēāļĢāļāļāļŠāļāļ āđāļĄāđāļ§āđāļēāļāļ°āđāļĄāđāđāļāđāļāļīāļāļāļēāļ MLflow āļāđāļāļēāļĄ
āđāļāļĨāļāļāļāļĢāđāļĄ ML āđāļāļāļēāļ°
āļāļĢāļīāļĐāļąāļāļŦāļĨāļēāļĒāđāļŦāđāļāļāļąāļāļŦāļēāļāļĨāļīāļāļ āļąāļāļāđ ML āļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĢāđāļāļĄāļāļļāļāļŠāļĄāļāļąāļāļīāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒ:
- āļāļēāļ§āđāļāļāļāļđāļ.ai: āļĄāļļāđāļāđāļāđāļāđāļāļāļĩāđāļāļēāļĢāļāļīāļāļāļēāļĄāļāļēāļĢāļāļāļŠāļāļāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļāļģāļĨāļāļ
- āļāđāļģāļŦāļāļąāļāđāļĨāļ°āļāļāļāļī: āļāļģāđāļŠāļāļāļāļēāļĢāļāļīāļāļāļēāļĄāļāļēāļĢāļāļāļŠāļāļ āļāļēāļĢāļāļģāļŦāļāļāđāļ§āļāļĢāđāļāļąāļāļāļļāļāļāđāļāļĄāļđāļĨ āđāļĨāļ°āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļēāļĢāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ
- āļāļēāļ§āļŦāļēāļ āļĄ.āļĨ: āđāļŦāđāļāļēāļĢāļāļīāļāļāļēāļĄāļāļēāļĢāļāļāļĨāļāļ āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļĨāļīāļāđāļāļāļāļģāļĨāļāļ āđāļĨāļ°āļāļēāļĢāļāļąāļāļāļķāļāļāđāļāļĄāļđāļĨ
- āļ§āļēāđāļĨāđāļŪ: āđāļāļĩāđāļĒāļ§āļāļēāļāļāđāļēāļāđāļāļāđāđāļĨāļāđāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļĢāļ°āļŠāļēāļāļāļāļāđāļĄāļāļāļĩāļāđāļĨāļīāļĢāđāļāļāļīāļ
āđāļĄāļāļēāđāļāļĨāļ§āđ
āđāļĄāļāļēāđāļāļĨāļ§āđāļāļķāđāļāļāļąāļāļāļēāđāļāļĒ Netflix āđāļāđāļāđāļāļĢāļĄāđāļ§āļīāļĢāđāļāđāļāđāļāđāļāļāļāļĢāđāļŠāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļĢāļ°āļŠāļēāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāđāļāļĄāļđāļĨāđāļĨāļ°āđāļāļāđāđāļĨāļāđ ML āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāļēāļāđāļŦāļāđ āđāļāđāļāđāļĒāļąāļāļāļēāļāļāļļāļāļŠāļĄāļāļąāļāļīāļāļēāļĢāļāļīāļāļāļēāļĄāļāļēāļĢāļāļāļĨāļāļāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāđāļĄāļ·āđāļāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļąāļ MLflow
Amazon SageMaker āđāļĨāļ° Vertex AI āļāļāļ Google
āļāļąāđāļāļŠāļāļ āļāđāļĄāļāļāļ SageMaker āđāļĨāļ° Vertex AI āļāļāļ Google āđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāļĨāļđāļāļąāđāļ MLOps āđāļāļ end-to-end āļāļĩāđāļāļđāļĢāļāļēāļāļēāļĢāđāļāđāļēāļāļąāļāđāļāļĨāļāļāļāļĢāđāļĄāļāļĨāļēāļ§āļāđāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļ āļāļĢāļīāļāļēāļĢāđāļŦāļĨāđāļēāļāļĩāđāļāļģāđāļŠāļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļ āļāļēāļĢāļāļķāļāļāļāļĢāļĄ āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļāđāđāļĄāđāļāļĨāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāđāļāļ§āļāļāļ§āđāļēāļ
āļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāđāļāļĒāļĨāļ°āđāļāļĩāļĒāļ
MLflow āļāļĩāđāļĄāļĩāļāļēāļĢāļāļąāļāļāļēāļĢāļāļąāļ MLflow āđāļāļāđāļāđāļāđāļāļāļāļĢāđāļŠ
Managed MLflow āđāļāļĒ Databricks āļĄāļĩāļāđāļāļāļĩāļŦāļĨāļēāļĒāļāļĢāļ°āļāļēāļĢāđāļŦāļāļ·āļāđāļ§āļāļĢāđāļāļąāļāđāļāđāļāđāļāļāļāļĢāđāļŠ āđāļāđāđāļāđ:
- āļāļēāļĢāļāļąāđāļāļāđāļēāđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļāđ: āļāļēāļĢāļāļđāļĢāļāļēāļāļēāļĢāļāļĒāđāļēāļāļĢāļēāļāļĢāļ·āđāļāļāļąāļ Databricks āļāđāļ§āļĒāļĨāļāđāļ§āļĨāļēāđāļĨāļ°āļāļ§āļēāļĄāļāļĒāļēāļĒāļēāļĄāđāļāļāļēāļĢāļāļąāđāļāļāđāļē
- scalability: āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļāļĢāļīāļĄāļēāļāļāļēāļāđāļĄāļāļāļĩāļāđāļĨāļīāļĢāđāļāļāļīāļāļāļāļēāļāđāļŦāļāđāđāļāđāļāļĒāđāļēāļāļāđāļēāļĒāļāļēāļĒ
- āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢ: āļāļļāļāļŠāļĄāļāļąāļāļīāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļāļĩāđāļāļĢāđāļāļĄāđāļāđāļāļēāļāļāļąāļāļāļĩ āđāļāđāļ āļāļēāļĢāļāļ§āļāļāļļāļĄāļāļēāļĢāđāļāđāļēāļāļķāļāļāļēāļĄāļāļāļāļēāļ (RBAC) āđāļĨāļ°āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāļāđāļāļĄāļđāļĨ
- āļāļđāļĢāļāļēāļāļēāļĢ: āļāļđāļĢāļāļēāļāļēāļĢāļāļĒāđāļēāļāļĨāļķāļāļāļķāđāļāļāļąāļāļāļĢāļīāļāļēāļĢāļāļāļ Databricks āļāļĢāļąāļāļāļĢāļļāļāļāļēāļĢāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāđāļĨāļ°āļāļąāļāļāđāļāļąāļāļāļēāļĢāļāļģāļāļēāļ
- āļāļēāļĢāļāļąāļāđāļāđāļāđāļĨāļ°āļŠāļģāļĢāļāļāļāđāļāļĄāļđāļĨ: āļāļĨāļĒāļļāļāļāđāļāļēāļĢāļŠāļģāļĢāļāļāļāđāļāļĄāļđāļĨāļāļąāļāđāļāļĄāļąāļāļīāļāļģāđāļŦāđāļĄāļąāđāļāđāļāđāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļāļāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļāļ§āļēāļĄāļāđāļēāđāļāļ·āđāļāļāļ·āļ
- āļĢāļēāļāļē: āļāļđāđāđāļāđāļāļģāļĢāļ°āļāđāļēāđāļāļĨāļāļāļāļĢāđāļĄ āļāļ·āđāļāļāļĩāđāđāļāđāļāļāđāļāļĄāļđāļĨ āđāļĨāļ°āļāļĢāļąāļāļĒāļēāļāļĢāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
- āļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāđāļĨāļ°āļāļēāļĢāļāļģāļĢāļļāļāļĢāļąāļāļĐāļē: āļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāđāļĨāļ°āļāļēāļĢāļāļģāļĢāļļāļāļĢāļąāļāļĐāļēāđāļāļĒāđāļāļāļēāļ°āđāļāļĒ Databricks
āļŠāļĢāļļāļ
āļāļēāļĢāļāļīāļāļāļēāļĄāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđāļāđāļ§āļĒ MLflow āļĄāļāļāđāļāļĢāļĄāđāļ§āļīāļĢāđāļāļāļĩāđāđāļāđāļāđāļāļĢāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļ§āļēāļĄāļāļąāļāļāđāļāļāļāļāļāļāļēāļĢāļāļąāļāļāļē āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļāđ LLM āđāļĄāļ·āđāļāļāļāļīāļāļąāļāļīāļāļēāļĄāđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļāđāļĨāļ°āđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļāļāļļāļāļĨāļąāļāļĐāļāļ°āļāļąāđāļāļŠāļđāļāļāļĩāđāļĢāļ°āļāļļāđāļ§āđāđāļāļāļđāđāļĄāļ·āļāļāļĩāđ āļāļļāļāļāļ°āļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļēāļĢāļāļāļĨāļāļ LLM āļāļĩāđāđāļāđāļāļĢāļ°āđāļāļĩāļĒāļ āļāļģāļāđāļģāđāļāđ āđāļĨāļ°āļĄāļĩāļāđāļāļĄāļđāļĨāđāļāļīāļāļĨāļķāļāļĄāļēāļāļāļķāđāļ
āđāļāļĢāļāļāļģāđāļ§āđāļ§āđāļēāļŠāļēāļāļē LLM āļāļģāļĨāļąāļāļāļąāļāļāļēāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§ āđāļĨāļ°āđāļāļāļāļīāļāđāļŦāļĄāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļĨāļ°āļāļēāļĢāļāļīāļāļāļēāļĄāļāđāļĄāļĩāđāļāļīāļāļāļķāđāļāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļ āļāļīāļāļāļēāļĄāļāđāļēāļ§āļŠāļēāļĢāļĨāđāļēāļŠāļļāļāļāđāļ§āļĒ MLflow āļĢāļļāđāļāļĨāđāļēāļŠāļļāļāđāļĨāļ°āļāļēāļĢāļ§āļīāļāļąāļĒ LLM āđāļāļ·āđāļāļāļĢāļąāļāđāļāđāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļīāļāļāļēāļĄāđāļĨāļ°āļāļĢāļ°āđāļĄāļīāļāļāļĨāļāļāļāļāļļāļāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļ
āđāļĄāļ·āđāļāļāļļāļāđāļāđāđāļāļāļāļīāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļāļĢāļāļāļēāļĢāļāļāļāļāļļāļ āļāļļāļāļāļ°āļāļąāļāļāļēāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļĩāđāļĨāļķāļāļāļķāđāļāļĒāļīāđāļāļāļķāđāļāđāļāļĩāđāļĒāļ§āļāļąāļāļāļĪāļāļīāļāļĢāļĢāļĄāđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļ LLM āļāļāļāļāļļāļ āļāļķāđāļāļāļģāđāļāļŠāļđāđāđāļāļāļāļģāļĨāļāļāļ āļēāļĐāļēāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āđāļāļ·āđāļāļāļ·āļāđāļāđāļĄāļēāļāļāļķāđāļ
āļāļąāļāđāļāđāđāļ§āļĨāļēāļŦāđāļēāļāļĩāļāļĩāđāļāđāļēāļāļĄāļēāļŦāļĄāļāļĄāļļāđāļāļāļĒāļđāđāļāļąāļāđāļĨāļāđāļŦāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāđāļĨāļ°āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāđāļāļīāļāļĨāļķāļāļāļĩāđāļāđāļēāļŠāļāđāļ āļāļ§āļēāļĄāļŦāļĨāļāđāļŦāļĨāđāļĨāļ°āļāļ§āļēāļĄāđāļāļĩāđāļĒāļ§āļāļēāļāļāļāļāļāļąāļāļāļģāđāļŦāđāļāļąāļāļĄāļĩāļŠāđāļ§āļāļĢāđāļ§āļĄāđāļāđāļāļĢāļāļāļēāļĢāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļāļāļāļāđāđāļ§āļĢāđāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļāļ§āđāļē 50 āđāļāļĢāļāļāļēāļĢ āđāļāļĒāđāļāđāļāđāļāļāļēāļ°āļāļĩāđ AI/ML āļāļ§āļēāļĄāļāļĒāļēāļāļĢāļđāđāļāļĒāļēāļāđāļŦāđāļāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļāļāļāļāļāļąāļāļĒāļąāļāļāļķāļāļāļąāļāđāļāļŠāļđāđāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļēāļāļĢāļĢāļĄāļāļēāļāļī āļāļķāđāļāđāļāđāļāļŠāļēāļāļēāļāļĩāđāļāļąāļāļāļĢāļ°āļāļ·āļāļĢāļ·āļāļĢāđāļāļāļĩāđāļāļ°āļŠāļģāļĢāļ§āļāđāļāļīāđāļĄāđāļāļīāļĄ
āļāļļāļāļāļēāļāļāļāļ
-
āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ LLM: āļāļĢāļāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļąāļāđāļāļĄāļąāļāļīāļāļāļ AWS āļāļģāļāļēāļāļāļĒāđāļēāļāđāļĢ
-
āđāļŦāļāļ·āļāļāļ§āđāļēāļĄāļēāļāļĢāļāļēāļ: āđāļŦāļāļļāđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļ AI āļāļķāļāļāļģāđāļāđāļāļāđāļāļāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāđāļāđāļāļāļĢāļīāļ
-
āļāļēāļĢāļ§āļīāļāļąāļĒāđāļŦāļĄāđāļāļāļāļąāļāļŦāļēāļŠāļģāļāļąāļ 16 āļāļĢāļ°āļāļēāļĢāļāļąāļāļĢāļ°āļāļ RAG āļĢāļ§āļĄāļāļķāļāļāļ§āļēāļĄāļŠāļąāļāļŠāļ
-
āđāļāļāļāđāļĄāļēāļāļĢāļāļēāļāļŠāļģāļŦāļĢāļąāļ LLM
-
Flux āđāļāļĒ Black Forest Labs: āļāļēāļĢāļāđāļēāļ§āļāļĢāļ°āđāļāļāļāļĢāļąāđāļāļāđāļāđāļāļāļāļāđāļĄāđāļāļĨāļāđāļāļāļ§āļēāļĄāđāļāđāļāļĢāļđāļāļ āļēāļ āļĄāļąāļāļāļĩāļāļ§āđāļē Midjourney āđāļŦāļĄ?
-
āđāļāļĢāļ·āđāļāļāļāļąāļāđāļāđāļāđāļāļ AI: āļāļģāļĨāļēāļĒāļāļ§āļēāļĄāđāļ§āđāļ§āļēāļāđāļāļŦāļĢāļ·āļāļŠāļĢāđāļēāļāļāļąāļāļāļāļąāļāļĢāļāļĩāđāļāļĩāļāļķāđāļ?