๋จธ์ ๋ฌ๋ ํ๋ก์ ํธ๊ฐ ๋๋ ๋ค, ์ฝ๋ ํ์ผ์ ๋ด์ฉ์ด ์ ๊ธฐ์ต๋์ง ์์ ์ ๋ฆฌ์ ์ด๋ ค์์ ๊ฒช์ง ์์ผ์
จ๋์?
์ด ํ๋ก๊ทธ๋จ์ Pytorch ๊ธฐ๋ฐ ๋จธ์ ๋ฌ๋ ์ฝ๋ ํ์ผ์ ์๋ ๋ถ์ํ์ฌ ๋ชจ๋ธ ๊ตฌ์กฐ, ํ๋ จ ์ค์ , ํ๋ผ๋ฏธํฐ ํต๊ณ, ๊ฒฐ๊ณผ ์๊ฐํ ๋ฑ์ ์๊ฐ์ ์ผ๋ก ์ ๊ณตํ๋ ๋๊ตฌ์
๋๋ค. ๋ค์ํ ์คํ ์ฝ๋๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๋น๊ตํ๊ณ , ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋๋ก ๋๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
์ฐธ๊ณ ์ด ํ๋ก๊ทธ๋จ์ ๋ก์ปฌ ์คํ์ ์ ์ ๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ณ๋์ ๋ฐฐํฌ URL์ด ์์ผ๋ฏ๋ก, ์๋ ์๋ด์ ๋ฐ๋ผ ์ง์ ์คํํด์ ์ด์ฉํ ์ ์์ต๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ FastAPI(๋ฐฑ์๋) + Streamlit(ํ๋ก ํธ์๋) ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. ์๋ ์์ ๊ทธ๋๋ก ์ํํ๋ฉด ๋ก์ปฌ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
git clone https://github.com/goatyeon03/ML_Code_Insight.git
cd ML_Code_InsightPython 3.11 ์ด์์ ์๊ตฌํฉ๋๋ค. ๊ฐ์ํ๊ฒฝ ์์ฑ ์ดํ ์คํํด์ฃผ์ธ์.
python3.11 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows*์ผ๋ถ ๊ธฐ๋ฅ์ Google AI Studio Gemini API๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์๋ ์ฌ์ดํธ์์ ๋ฌด๋ฃ API Key๋ฅผ ๋ฐ๊ธ๋ฐ์ ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
API Key ๋ฐ๊ธ:
https://aistudio.google.com/app/apikey
ํ๊ฒฝ ๋ณ์ ์ค์ :
macOS / Linux:
export GOOGLE_API_KEY="๋ฐ๊ธ๋ฐ์_API_ํค"Windows PowerShell:
setx GOOGLE_API_KEY "๋ฐ๊ธ๋ฐ์_API_ํค"cd backend
pip install -r requirements.txt
uvicorn main:app --reloadFastAPI ๋ฌธ์ ์ ์:
http://127.0.0.1:8000/docs
cd frontend
pip install -r requirements.txt
streamlit run app.pyStreamlit UI:
http://localhost:8501
Pytorch Experiment Dashboard๋ ๋ค์๊ณผ ๊ฐ์ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ๐ Code Parsing: ํ์ต ์ฝ๋(.py)์์ ๋ชจ๋ธ ๊ตฌ์กฐ, ํ์ต ์ค์ , ํ๋ผ๋ฏธํฐ ์ ๋ณด๋ฅผ ์๋ ์ถ์ถ
- ๐จ Model Visualization: ํ์ฑ๋ ๋ชจ๋ธ์ graphviz ๊ธฐ๋ฐ ๊ตฌ์กฐ๋๋ก ์๊ฐํ
- ๐ Training Summary: optimizer, epoch, batch_size ๋ฑ ์ฃผ์ ์ค์ ์ ์๋ ์ธ์
- โ Parameter Counting: AST ๊ธฐ๋ฐ ํ์ฑ + sandbox worker๋ฅผ ํตํ ํ๋ผ๋ฏธํฐ ๊ณ์ฐ
- ๐ Result Visualization: JSON ํ์ต ๋ก๊ทธ๋ฅผ ์๋ ์๊ฐํ (loss / classification / regression ๊ตฌ๋ถ)
- ๐๏ธ Project-based Comparison: ์คํ ํ์ผ๋ค์ ํ๋ก์ ํธ ๋จ์๋ก ์ ๋ฆฌํ๊ณ ๋น๊ต
์ฌ์ฉ์๋ ๋ค์ ํ๋ฆ์ ๋ฐ๋ผ ๋์๋ณด๋๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
- ๋ก๊ทธ์ธ ๋๋ ํ์๊ฐ์ ์ ํตํด ๊ณ์ ์ ์์ฑํฉ๋๋ค.
- ์ฌ์ด๋๋ฐ์์ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ฑฐ๋ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ ํ๋ก์ ํธ ์์ฑ ์, ์ฆ์ ํด๋น ํ๋ก์ ํธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ํ๋ก์ ํธ๊ฐ ์ ํ๋ ์ํ์์
.pyํ์ต ์ฝ๋๋ฅผ ์ ๋ก๋ํฉ๋๋ค. - ์ ๋ก๋๋ ํ์ผ์ ์๋์ผ๋ก ๋ถ์๋๋ฉฐ, ์๋จ์ ํ์ผ ์ ํ ๋ฉ๋ด์์ ๋ถ์ ๋์์ ์ง์ ํ ์ ์์ต๋๋ค.
- ๋์ผ ํ์ผ ์ฌ์
๋ก๋ ์ ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค:
- ๋ฎ์ด์ฐ๊ธฐ
- ๋ด์ฉ์ด ๋ค๋ฅด๋ฉด ์ ๋ฒ์ (v1, v2โฆ)์ผ๋ก ์ ์ฅ
- ์ ๋ก๋ ์ทจ์
์ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด ๋ค์ ๋ถ์ ํจ๋์ด ํ์๋ฉ๋๋ค:
- Training Information: ๋ชจ๋ธ ๊ตฌ์กฐ(๊ทธ๋ํ ํฌํจ), ํ๋ผ๋ฏธํฐ ์, ํ์ต ์ค์
- Result Visualization: JSON ๋ก๊ทธ ๊ธฐ๋ฐ ํ์ต ๊ทธ๋ํ
- Final Performance: ํ์ผ๋ณ test ์ฑ๋ฅ ์์ฝ ํ
๊ฐ ํจ๋์ ์ ๋ก๋๋ ํ์ผ ๋ชฉ๋ก๊ณผ ์ฐ๋๋๋ฉฐ, ์ฌ๋ฌ ํ์ผ ๊ฐ ๋น๊ต๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ์ฝ๋ ํ์ผ๊ณผ ๋์ผํ ์ ๋์ฌ(prefix)๋ฅผ ๊ฐ์ง JSON ๋ก๊ทธ ํ์ผ์ ์ ๋ก๋ํฉ๋๋ค.
- loss / classification / regression ํญ๋ชฉ์ ์๋ ๊ตฌ๋ถํด ์๊ฐํํฉ๋๋ค.
- ๊ทธ๋ํ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ์์ ๋ณ ์ธ๋ถ ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ํ์ผ ์ญ์ : ์ฌ์ด๋๋ฐ์์ ์ญ์ ๊ฐ๋ฅํ๋ฉฐ, ๋งค์นญ๋ JSON ํ์ผ๋ ํจ๊ป ์ญ์ ๋ฉ๋๋ค.
- ํ๋ก์ ํธ ์ญ์ : ํด๋น ํ๋ก์ ํธ์ ๋ชจ๋ ํ์ผ์ด ์ญ์ ๋ฉ๋๋ค.
- ๊ณ์ ์ญ์ : ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฒด ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์๋๋ ์ด ํ๋ก์ ํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ธฐ์ ์ ์ผ๋ก ์ ๋ฆฌํ ๋ชฉ๋ก์ ๋๋ค.
- ๋ก๊ทธ์ธ/ํ์๊ฐ์
- SQLite ๊ธฐ๋ฐ ์ฌ์ฉ์ยทํ๋ก์ ํธยทํ์ผ ์ ์ฅ
- ์ ๋ก๋/์ญ์ ์ DB์ ์๋ ๋๊ธฐํ
- ์๋ก๊ณ ์นจ์๋ ํ์ด์ง ์ํ ์ ์ง
| ํ๋ก์ ํธ ์ ํ | ์ ํ๋ก์ ํธ ์์ฑ |
|---|---|
![]() |
![]() |
- ํ๋ก์ ํธ ์์ฑ/์ ํ/์ญ์
- AST ๊ธฐ๋ฐ model_parser ์ ์ฉ
- ํ์ ์ LLM(Gemini) ๋ณด์กฐ ํ์ฉ
- Graphviz ๊ธฐ๋ฐ ๋ชจ๋ธ ๊ตฌ์กฐ ๋ ธ๋ ์๊ฐํ
- ๊ตฌ์กฐ/ํ๋ผ๋ฏธํฐ/์์ฝ ์ ๋ณด ์บ์ฑ
- ๋์ผ ํ์ผ ์ฌ๋ก๋ ์ ์ฆ์ ๋ถ๋ฌ์ค๊ธฐ
- ๋ง์ฐ์ค ์ค๋ฒ(hover) ์ ์ธ๋ถ ์์น ํ์
- ๋ค์ํ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ด์ ์ผ๋ก ๋น๊ต ๊ฐ๋ฅ
| ์ ๋ก๋ ํ์ผ ์์ ๋ | ๋์๋ง |
|---|---|
![]() |
![]() |
- ํ๋ก์ ํธ์ ํ์ผ์ด ์์ ๋ ์ํ ํ์ต ์ฝ๋/๊ฒฐ๊ณผ ํ์ผ ์ ๊ณต
- ํ๋ฉด ํ๋จ ? ์์ด์ฝ์์ ์ฌ์ดํธ ์ด์ฉ ๋ฐฉ๋ฒ ๊ฐ๋จ ์๋ด
Pytorch_Experiment_Dashboard/
โ
โโโ backend/
โ โโโ api.py # FastAPI ์ํธ๋ฆฌํฌ์ธํธ
โ โโโ requirements.txt # ๋ฐฑ์๋ ํจํค์ง ๋ชฉ๋ก
โ โ
โ โโโ llm/ # LLM ๊ธฐ๋ฐ ๋ณด์กฐ ๋ถ์ ๋ชจ๋
โ โ โโโ gemini.py # Gemini API ๋ํผ
โ โ โโโ model_name_extractor.py
โ โ โโโ param_estimator.py
โ โ โโโ refine_summary.py
โ โ
โ โโโ parsers/ # AST ๊ธฐ๋ฐ ์ฝ๋ ๋ถ์๊ธฐ
โ โ โโโ code_parser.py # ํ์ต ์ค์ / ํ์ดํผํ๋ผ๋ฏธํฐ ํ์
โ โ โโโ model_parser.py # ๋ชจ๋ธ ๊ตฌ์กฐ ํ์
โ โ โโโ module_collector.py # ๋ชจ๋ธ ๊ตฌ์ฑ ์์ ์์ง๊ธฐ
โ โ โโโ param_counter.py # AST ๊ธฐ๋ฐ ํ๋ผ๋ฏธํฐ ๊ณ์ฐ๊ธฐ
โ โ โโโ param_worker.py # ์๋๋ฐ์ค์์ ์์ ์คํํ๋ ์์ปค
โ โ
โ โโโ routes/ # FastAPI ๋ผ์ฐํธ(์๋ํฌ์ธํธ) ๋ชจ์
โ โ โโโ ... # ์: upload, delete, query ๋ฑ
โ โ
โ โโโ uploads/ # ์
๋ก๋๋ ํ์ผ ์ ์ฅ
โ โโโ __init__.py
โ
โโโ frontend/
โ โโโ app.py # Streamlit ๋ฉ์ธ ์ฑ
โ โโโ requirements.txt # ํ๋ก ํธ์๋ ํจํค์ง ๋ชฉ๋ก
โ โ
โ โโโ modules/
โ โ โโโ diff_utils.py # ์ฝ๋ diff ๋ถ์
โ โ โโโ manage_account.py
โ โ โโโ manage_files.py # ํ์ผ ๊ด๋ฆฌ ๊ธฐ๋ฅ
โ โ โโโ model_blocks.py # ๋ชจ๋ธ ๊ตฌ์กฐ ๋ธ๋ก ์๊ฐํ
โ โ โโโ project_dashboard.py # ํ๋ก์ ํธ ๋ฉ์ธ ๋์๋ณด๋
โ โ
โ โโโ utils/
โ โ โโโ auth.py # ์ธ์ฆ ๊ด๋ จ ์ ํธ
โ โ โโโ db.py # SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ
โ โ โโโ file_ops.py # ํ์ผ ์ฒ๋ฆฌ ์ ํธ
โ โ โโโ match_utils.py # ํ์ผ ๋งค์นญ ๋ก์ง
โ โ
โ โโโ __init__.py
โ
โโโ README.md
- ๋ค์ค ์ฝ๋ ํ์ผ ๊ณ ๋ ค
- ํ๋ผ๋ฏธํฐ ์ ๊ณ์ฐ ๊ธฐ๋ฅ ๊ฐํ
- ๊ฒฐ๊ณผ ํ์ผ ์๋ ๋งค์น ๊ธฐ๋ฅ ๊ฐํ
- ๋ฐฐํฌ
๋ณธ ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๊ณต๊ฐ๋์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ ์ฅ์์ ํฌํจ๋ LICENSE ํ์ผ์์ ํ์ธํ ์ ์์ต๋๋ค.
Yang Soyeon (์์์ฐ)
- GitHub: https://github.com/goatyeon03
- E-mail: uaua1595@seoultech.ac.kr












