๐ Paper2Code: Automating Code Generation from Scientific Papers
๋ ผ๋ฌธ์ ์๋์ผ๋ก ์ฝ๋ ์ ์ฅ์๋ก ๋ณํํ๋ ๋ค์ค ์์ด์ ํธ ๊ธฐ๋ฐ์ LLM ์์คํ
๐ Paper2Code: Automating Code Generation from Scientific Papers
๐ PaperCoder ๊ฐ์
PaperCoder๋ ๋จธ์ ๋ฌ๋ ๋ ผ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์ฝ๋ ์ ์ฅ์๋ฅผ ์์ฑํ๋ ๋ค์ค ์์ด์ ํธ ๊ธฐ๋ฐ์ LLM ์์คํ ์ผ๋ก, ๊ธฐํ(planning), ๋ถ์(analysis), ์ฝ๋ ์์ฑ(code generation)์ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํฉ๋๋ค.
โ๏ธ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
- ๊ธฐํ(Planning): ๋ ผ๋ฌธ์ ํต์ฌ ๋ด์ฉ์ ๋ถ์ํ์ฌ ์ฝ๋ ๊ตฌ์กฐ์ ํ์ํ ์์ ์ ๊ณํํฉ๋๋ค.
- ๋ถ์(Analysis): ๊ณํ๋ ์์ ์ ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํ๊ณ , ๋ ผ๋ฌธ์ ์ธ๋ถ ๋ด์ฉ์ ์ดํดํฉ๋๋ค.
- ์ฝ๋ ์์ฑ(Code Generation): ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ํ์ง์ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
๐ ์ฌ์ฉ ๋ฐฉ๋ฒ (Quick Start)
โ OpenAI API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
1
2
3
4
5
pip install openai
export OPENAI_API_KEY="<OPENAI_API_KEY>"
cd scripts
bash run.sh
โ ์คํ์์ค ๋ชจ๋ธ(vLLM)์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๊ธฐ๋ณธ ๋ชจ๋ธ์ deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct์
๋๋ค.
1
2
3
4
pip install vllm
cd scripts
bash run_llm.sh
๐ ๊ฒฐ๊ณผ๋ฌผ ๊ตฌ์กฐ
1
2
3
4
5
6
7
outputs
โโโ Transformer
โ โโโ analyzing_artifacts
โ โโโ coding_artifacts
โ โโโ planning_artifacts
โโโ Transformer_repo # ์ต์ข
์์ฑ๋ ์ฝ๋ ์ ์ฅ์
๐ ๏ธ ์์ธ ํ๊ฒฝ ์ค์
ํ์์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค:
1
2
3
4
5
pip install openai
pip install vllm
# ๋๋ ๋ชจ๋ ์์กด์ฑ ์ค์น
pip install -r requirements.txt
๐ PDF๋ฅผ JSON์ผ๋ก ๋ณํ (์ ํ์ )
๋ ผ๋ฌธ PDF๋ฅผ JSON ํ์์ผ๋ก ๋ณํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์งํํฉ๋๋ค:
1
2
3
4
5
6
7
8
9
git clone https://github.com/allenai/s2orc-doc2json.git
cd ./s2orc-doc2json/grobid-0.7.3
./gradlew run
mkdir -p ./s2orc-doc2json/output_dir/paper_coder
python ./s2orc-doc2json/doc2json/grobid2json/process_pdf.py \
-i ${PDF_PATH} \
-t ./s2orc-doc2json/temp_dir/ \
-o ./s2orc-doc2json/output_dir/paper_coder
๐ ์ ์ฅ์ ํ์ง ํ๊ฐ ๋ฐฉ๋ฒ
PaperCoder๋ก ์์ฑ๋ ์ ์ฅ์์ ํ์ง์ ๋ชจ๋ธ ๊ธฐ๋ฐ์ผ๋ก ํ๊ฐํฉ๋๋ค.
๐ ๋ ํผ๋ฐ์ค ์๋ ํ๊ฐ
1
2
3
4
5
6
7
8
9
10
11
12
cd codes/
python eval.py \
--paper_name Transformer \
--pdf_json_path ../examples/Transformer_cleaned.json \
--data_dir ../data \
--output_dir ../outputs/Transformer \
--target_repo_dir ../outputs/Transformer_repo \
--eval_result_dir ../results \
--eval_type ref_free \
--generated_n 8 \
--papercoder
๐ ๋ ํผ๋ฐ์ค ๊ธฐ๋ฐ ํ๊ฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
cd codes/
python eval.py \
--paper_name Transformer \
--pdf_json_path ../examples/Transformer_cleaned.json \
--data_dir ../data \
--output_dir ../outputs/Transformer \
--target_repo_dir ../outputs/Transformer_repo \
--gold_repo_dir ../examples/Transformer_gold_repo \
--eval_result_dir ../results \
--eval_type ref_based \
--generated_n 8 \
--papercoder
๐ Paper2Code๋ฅผ ํตํด ๋ ผ๋ฌธ์ ์์ด๋์ด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ , ์ฝ๋์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ชจ๋ธ ๊ธฐ๋ฐ ํ๊ฐ๋ฅผ ํตํด ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๐ ๋งํฌ
https://github.com/going-doer/Paper2Code?utm_source=pytorchkr&ref=pytorchkr