GitHub - huggingface/ml-intern: ๐ค ml-intern: an open-source ML engineer that reads papers, trains models, and ships ML models
ํต์ฌ ํฌ์ธํธ
- 1ML Intern์ Hugging Face ์ํ๊ณ๋ฅผ ํ์ฉํ์ฌ ML ๊ด๋ จ ์ฝ๋๋ฅผ ์์จ์ ์ผ๋ก ์ฐ๊ตฌ, ์์ฑ ๋ฐ ๋ฐฐํฌํ๋ ML ์์ด์ ํธ์ ๋๋ค.
- 2์ด ์์ด์ ํธ๋ ๋ค์ํ LLM๊ณผ ๋ก์ปฌ ๋๋ Hugging Face Space ์๋๋ฐ์ค ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ContextManager์ ToolRouter๋ฅผ ํฌํจํ๋ Agentic Loop๋ฅผ ํตํด ๋ณต์กํ ์์ ์ ์ํํฉ๋๋ค.
- 3๋ํ, ์คํ ์ถ์ ๋ฐ์ดํฐ๋ฅผ Hugging Face ๋ฐ์ดํฐ์ ์ ์๋์ผ๋ก ์ ๋ก๋ํ๊ณ Doom Loop Detector ๋ฐ Slack ์๋ฆผ๊ณผ ๊ฐ์ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ML Intern์ Hugging Face ์ํ๊ณ๋ฅผ ํ์ฉํ์ฌ ๋จธ์ ๋ฌ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์์จ์ ์ผ๋ก ์ฐ๊ตฌํ๊ณ , ์์ฑํ๋ฉฐ, ๋ฐฐํฌํ๋ ๋ฐ ์ค์ ์ ๋ ML ์ธํด ์์ด์ ํธ์ ๋๋ค. ์ด ์์ด์ ํธ๋ Hugging Face์ ๋ฌธ์, ๋ ผ๋ฌธ, ๋ฐ์ดํฐ์ , ํด๋ผ์ฐ๋ ์ปดํจํ ์์์ ๊น์ด ์ ๊ทผํ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํต์ฌ ๋ฐฉ๋ฒ๋ก ๋ฐ ์ํคํ ์ฒ
ML Intern์ ํต์ฌ์ ๋ณต์กํ ์์
์ ์์จ์ ์ผ๋ก ์ํํ๊ธฐ ์ํ ์ ๊ตํ ์ํคํ
์ฒ์ ๋ฐ๋ณต์ ์ธ Agentic Loop์ ์์ต๋๋ค.
- Operation Submission and Routing: ์ฌ์ฉ์์ ์
๋ ฅ์
submission_loop๋ฅผ ํตํด ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด ๋ฃจํ๋user_input,exec_approval๋ฑ ๋ค์ํOperation์event_queue์์ ๋ฐ์ ํด๋น ํธ๋ค๋ฌ(run_agent,compact๋ฑ)๋ก ๋ผ์ฐํ ํฉ๋๋ค.
- Agentic Loop (
Handlers.run_agent()): ์์ด์ ํธ์ ์ฃผ์ ๋ก์ง์ ์ต๋ 300ํ ๋ฐ๋ณต๋๋Agentic Loop๋ด์์ ์คํ๋ฉ๋๋ค. ์ด ๋ฃจํ๋ ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:- LLM Call:
ContextManager์ ์ ์ฅ๋ ํ์ฌ ๋ฉ์์ง ํ์คํ ๋ฆฌ์ToolRouter๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ tool specifications์ ๊ธฐ๋ฐ์ผ๋กlitellm.acompletion()์ ํธ์ถํ์ฌ LLM(Large Language Model)๋ก๋ถํฐ ์๋ต์ ์์ฑํฉ๋๋ค. - Tool Call Parsing: LLM ์๋ต์์
tool_calls[]๋ฅผ ํ์ฑํฉ๋๋ค. ๋ง์ฝtool_calls๊ฐ ์๋ค๋ฉด, ์์ด์ ํธ๋ ์์ ์ ์๋ฃํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋ฃจํ๋ฅผ ์ข ๋ฃํฉ๋๋ค. - Approval Check: ํ์ฑ๋
tool_calls์คjobs,sandbox์ฌ์ฉ ๋๋ ํ๊ดด์ ์ธ ์์ ์ ํฌํจํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์น์ธ(Approval check)์ ์์ฒญํฉ๋๋ค. - Tool Execution: ์น์ธ๋
tool_call์ToolRouter๋ฅผ ํตํด ์คํ๋ฉ๋๋ค. - Result Integration:
ToolRouter์ ์คํ ๊ฒฐ๊ณผ๋ContextManager์ ์ถ๊ฐ๋์ด ๋ค์ LLM ํธ์ถ์ ์ํ ์๋ก์ด ์ปจํ ์คํธ๋ฅผ ํ์ฑํฉ๋๋ค. - Repetition:
tool_calls๊ฐ ์กด์ฌํ๊ณ ์คํ๋์๋ค๋ฉด, ์์ด์ ํธ๋ ๋ค์ ๋ฐ๋ณต์ ์ํด ๋ฃจํ๋ฅผ ๊ณ์ํฉ๋๋ค.
- LLM Call:
- ์ฃผ์ ๊ตฌ์ฑ ์์:
ContextManager: ์ด ๊ตฌ์ฑ ์์๋ ์์ด์ ํธ์ ์ธ์ ์ํ์ ๋ฉ์์ง ํ์คํ ๋ฆฌ(litellm.Message[]ํํ)๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ปจํ ์คํธ์ ๊ธธ์ด๊ฐ ์ผ์ ๊ธฐ์ค(170k ํ ํฐ)์ ์ด๊ณผํ๋ฉด ์๋ ์์ถ(auto-compaction) ๊ธฐ๋ฅ์ ์ํํ์ฌ ํจ์จ์ฑ์ ์ ์งํฉ๋๋ค. ๋ํ ๋ชจ๋ ์ธ์ ์ Hugging Face Hub์ private ๋ฐ์ดํฐ์ ์ผ๋ก ์๋ ์ ๋ก๋๋ฉ๋๋ค.ToolRouter: ์์ด์ ํธ๊ฐ ๋ค์ํ ์ธ๋ถ ์์คํ ๊ณผ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ ํต์ฌ ๋ชจ๋์ ๋๋ค. ๋ค์์ ํฌํจํ ๊ด๋ฒ์ํ ๋๊ตฌ์ ์ ๊ทผ ๊ถํ์ ์ ๊ณตํฉ๋๋ค:- Hugging Face ๋ฌธ์ ๋ฐ ์ฐ๊ตฌ ์๋ฃ ๊ฒ์
- Hugging Face repository, dataset, job, paper ์ ๊ทผ
- GitHub ์ฝ๋ ๊ฒ์
Sandbox(Hugging Face Space ๊ธฐ๋ฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ) ๋ฐ ๋ก์ปฌ ํ์ผ ์์คํ ๋๊ตฌ (bash, read, write, edit)- Planning ๋๊ตฌ
MCP(Multi-party Computation Protocol) ์๋ฒ ๋๊ตฌ
Doom Loop Detector: ์์ด์ ํธ๊ฐ ๋ฐ๋ณต์ ์ธ tool patterns์ ๋น ์ง๋ ๊ฒ์ ๊ฐ์งํ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํcorrective prompts๋ฅผ LLM์ ์ฃผ์ ํ์ฌ ๋ฌดํ ๋ฃจํ๋ฅผ ๋ฐฉ์งํ๋ ์์ ์ฅ์น์ ๋๋ค.
์ฌ์ฉ๋ฒ ๋ฐ ๊ธฐ๋ฅ
ML Intern์ ml-intern CLI ๋ช
๋ น์ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค. interactive mode (์ฑํ
์ธ์
) ๋๋ headless mode (๋จ์ผ ํ๋กฌํํธ, ์๋ ์น์ธ)๋ก ์คํํ ์ ์์ต๋๋ค. ๋ค์ํ ๋ชจ๋ธ (Anthropic/Claude, OpenAI/GPT, Ollama/Llama, vLLM/Llama)์ --model ์ต์
์ ํตํด ์ ํํ ์ ์์ผ๋ฉฐ, LOCAL_LLM_BASE_URL ๋ฐ *_BASE_URL ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค.
CLI ๋๊ตฌ runtime์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ํ์ผ ์์คํ
(bash, read, write, edit)์ ์ฌ์ฉํ์ง๋ง, --sandbox-tools ์ต์
์ ํตํด HF Space sandbox tools(sandbox_create ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Sandbox ๋๊ตฌ๋ ์๊ฒฉ ์ฝ๋ ํ
์คํธ ๋ฐ GPU ์์ ์์ฒญ์ ์ ์ฉํ๋ฉฐ, HF_TOKEN์ด ํ์ํฉ๋๋ค.
๋ชจ๋ ์ธ์
์ ์คํ ์ถ์ (traces)์ Claude Code JSONL format์ผ๋ก ์ฌ์ฉ์์ private Hugging Face ๋ฐ์ดํฐ์
์ ์๋ ์
๋ก๋๋๋ฉฐ, HF Agent Trace Viewer๋ฅผ ํตํด ํ์ธ ๋ฐ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. CLI config๋ฅผ ํตํด ์ถ์ ๊ณต์ ๋ฅผ ์ตํธ์์ํ๊ฑฐ๋ ๋์ ์ ์ฅ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์๋ฆผ ๊ฒ์ดํธ์จ์ด
ML Intern์ Slack๊ณผ ๊ฐ์ one-way notification gateway๋ฅผ ์ง์ํ์ฌ ์์ด์ ํธ์ ์ํ ์
๋ฐ์ดํธ(์น์ธ ํ์, ์๋ฌ ๋ฐ์, ํด ์๋ฃ ๋ฑ)๋ฅผ ์ธ๋ถ ์๋น์ค๋ก ์ ์กํ ์ ์์ต๋๋ค. ์ด๋ SLACK_BOT_TOKEN, SLACK_CHANNEL_ID์ ๊ฐ์ ํ๊ฒฝ ๋ณ์ ๋๋ cli_agent_config.json์ ํตํด ์ค์ ๋ฉ๋๋ค.
๊ฐ๋ฐ
์๋ก์ด ๋ด์ฅ ๋๊ตฌ๋ agent/core/tools.py ํ์ผ์ ์์ ํ์ฌ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ToolSpec ๊ฐ์ฒด๋ฅผ ์ ์ํ์ฌ name, description, parameters, handler๋ฅผ ์ง์ ํฉ๋๋ค. MCP Servers๋ configs/cli_agent_config.json์ ํตํด ์ค์ ํ๋ฉฐ, transport, url, headers์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ ์ ruff๋ฅผ ์ด์ฉํ pre-commit checks (์ฝ๋ ํฌ๋งทํ
๋ฐ ๋ฆฐํ
)๊ฐ ๊ถ์ฅ๋ฉ๋๋ค.