이 저장소는 하나의 프레임워크가 아니라, 식 발견 / symbolic regression baseline 4종을 재현하기 위한 워크스페이스입니다.
루트에서 해야 할 일은 크게 두 가지입니다.
Makefile로 각 baseline용 환경을 만든다.- 원하는 baseline 디렉토리로 들어가 준비된 실행 스크립트를 돌린다.
이 README는 논문 소개보다 재현 절차에 집중합니다.
custom_edl/— EDLcustom_icsr/— ICSRcustom_llm_sr/— LLM-SRcustom_lasr/— LaSR (Julia 포함)
각 프로젝트는 실행 방식과 의존성이 다릅니다. 공통 진입점은 루트 Makefile입니다.
루트에서:
make이 명령은 Makefile 기준으로 아래 순서의 설치를 수행합니다.
edlicsrllmsrlasr
개별 설치도 가능합니다.
make edl
make icsr
make llmsr
make lasr- Conda 필요
- uv 필요 (
llmsr설치 시 사용, 없으면Makefile이 설치 시도) - Julia 1.11.x 필요 (
lasr설치 시 사용, 없으면Makefile이 설치 시도) - 일부 실험은 GPU, 로컬 LLM 서버, 또는 API 키 필요
현재 이 저장소는 baseline별 API 키 설정이 없으면 정상 실행이 어려운 구조입니다.
실제로 코드가 보는 위치는 다음과 같습니다.
- EDL: 루트
.env에서EDL_API또는OPENROUTER_API_KEY - ICSR: 루트
.env또는 설정 파일의api_key_path; 환경변수 우선순위는ICSR_API→OPENROUTER_API_KEY→OPENAI_API_KEY - LLM-SR:
custom_llm_sr/.env에서 로드되며, API 호출 시LLMSR_API또는OPENROUTER_API_KEY사용 - LaSR: 루트
.env의LASR_API, 없으면OPENROUTER_API_KEY
즉, 실험 전에 API 값을 먼저 채워 넣는 작업이 필요합니다.
가장 안전한 방식은 아래 두 군데를 준비하는 것입니다.
위치:
/home/work/bong/paper/DoLQ_baseline_model/.env예시:
EDL_API=your_openrouter_key
ICSR_API=your_openrouter_or_openai_key
LASR_API=your_openrouter_key
OPENROUTER_API_KEY=your_openrouter_key
OPENAI_API_KEY=your_openai_key위치:
/home/work/bong/paper/DoLQ_baseline_model/custom_llm_sr/.env예시:
LLMSR_API=your_openrouter_key
OPENROUTER_API_KEY=your_openrouter_key프로젝트마다 변수명이 다르므로, 하나의 키만 넣지 말고 baseline별 변수명도 같이 채워 두는 것이 재현 시 가장 덜 헷갈립니다.
환경이 꼬였을 때는:
make clean후 다시 설치하는 것이 가장 단순합니다.
처음이면 아래 순서를 권장합니다.
make edl또는make icsr로 Python 환경 하나만 먼저 설치- 해당 디렉토리의
run.sh또는run_ode_*.sh실행 - 출력 디렉토리가 생기는지 확인
- 그 다음
llmsr, 마지막에lasr진행
llmsr는uv, 서버/API 설정,.env같은 추가 변수가 있습니다.lasr는 Julia까지 포함되어 설치 복잡도가 가장 높습니다.
가장 직접적인 진입점은:
cd custom_edl
./run.sh이 스크립트는:
- 현재 디렉토리를
custom_edl/로 맞추고 PYTHONPATH를 비우고/home/work/miniconda3/envs/edl/bin/python main.py를 직접 실행합니다
즉, Conda env 이름은 edl이어야 합니다.
준비된 예시는:
cd custom_edl
./run_ode_101.sh이 스크립트는 x0_t, x1_t, x2_t, x3_t를 병렬로 돌립니다.
- 실행 스크립트:
custom_edl/run.sh - ODE 예시:
custom_edl/run_ode_101.sh - 메인 로직:
custom_edl/main.py - PDE 예시들:
custom_edl/scripts_pde/
실험 스크립트 기준으로 주로 아래에 생성됩니다.
custom_edl/result/custom_edl/log/
- API 기반 모델명을 쓰는 경우 모델 접근 권한/키 확인
- 병렬 실행 수가 많으면 GPU/요청 제한 확인
- 루트
.env에EDL_API또는OPENROUTER_API_KEY가 들어 있는지 확인
기본 진입점:
cd custom_icsr
./run.sh이 스크립트는:
- conda
icsr환경 활성화 PYTHONPATH초기화/home/work/miniconda3/envs/icsr/bin/python main.py실행
즉, Conda env 이름은 icsr이어야 합니다.
cd custom_icsr
./run_ode_101.sh이 스크립트는 Hydra override를 이용해 ODE-101 실험 여러 개를 백그라운드로 실행합니다.
custom_icsr/conf/config.yaml의 아래 값은 실제 환경에 맞게 확인하는 것이 좋습니다.
root- 모델 관련 경로
- 캐시 경로
- 출력 경로(
output_dir)
- 실행 스크립트:
custom_icsr/run.sh - ODE 예시:
custom_icsr/run_ode_101.sh - 메인 로직:
custom_icsr/main.py - 설정 파일:
custom_icsr/conf/
기본적으로 runs/ 아래에 생성됩니다.
예:
runs/<experiment>/<model>/<timestamp>/
일반적으로 그 안에 로그와 결과 파일이 쌓입니다.
- Hydra config의
root가 현재 머신 경로와 맞는지 - 모델/API 설정이 현재 사용 환경과 맞는지
- ODE 데이터 경로가 실제로 존재하는지
- 루트
.env또는api_key_path파일에 ICSR용 키가 있는지 확인
LLM-SR은 다른 두 Python 프로젝트보다 실행 전에 확인할 것이 조금 더 많습니다.
가장 실용적인 진입점은:
cd custom_llm_sr
bash run_ode_101.sh이 스크립트는:
.env가 있으면 로드- Python 3.12 관련 경로를
PYTHONPATH,LD_LIBRARY_PATH에서 제거 main.py를 4개 target column(x0_t~x3_t)에 대해 병렬 실행
cd custom_llm_sr
python main.py \
--use_api True \
--api_model "google/gemini-2.5-flash-lite" \
--problem_name ode_101 \
--spec_path ./specs/ode_101_x0_t.txt \
--log_path ./logs/ode_101_gemini2.5-flash-lite \
--use_custom_dataset True \
--custom_target_column x0_t서브프로젝트 README 기준으로 먼저 로컬 LLM 서버를 띄운 뒤 메인 파이프라인을 실행하는 흐름입니다.
cd custom_llm_sr
bash run_server.sh그 다음 main.py 실행.
- 실전 ODE 스크립트:
custom_llm_sr/run_ode_101.sh - 메인 로직:
custom_llm_sr/main.py - 스펙 파일:
custom_llm_sr/specs/ - 데이터:
custom_llm_sr/data/ - 서버 엔진:
custom_llm_sr/llm_engine/engine.py
main.py에 넘긴 --log_path 아래에 생성됩니다.
예:
./logs/ode_101_gemini2.5-flash-lite
.env가 필요한지 확인- API 키 또는 로컬 서버 URL 확인
specs/의 target별 파일이 실제로 존재하는지 확인- Python 3.11 환경에서 실행 중인지 확인
- API 모드라면
custom_llm_sr/.env안에LLMSR_API또는OPENROUTER_API_KEY가 있는지 확인
LaSR는 Julia가 포함되어 있어 설치와 실행 흐름이 다릅니다.
cd custom_lasr
julia example.jlexample.jl은:
Pkg.activate(".")Pkg.instantiate()- 예제 데이터 생성
equation_search(...)실행logs/lasr_runs에 TensorBoard 로그 기록
make lasr이 과정은:
- conda
lasrPython env 생성 custom_lasr/requirements.txt설치- Julia 확인 또는 설치
custom_lasr/Project.toml기준Pkg.resolve()/Pkg.instantiate()수행
- 예제 실행:
custom_lasr/example.jl - Julia 패키지 정의:
custom_lasr/Project.toml - 소스:
custom_lasr/src/ - 프롬프트:
custom_lasr/prompts/ - 실험 코드:
custom_lasr/ode_experiment/
예제 기준:
custom_lasr/logs/lasr_runs
추가 실험 코드는 각 스크립트별 출력 파일을 따릅니다.
- Julia가 정상 설치되었는지
prompts/자산이 필요한 실험인지- OpenAI-compatible LLM 설정이 필요한지
- 루트
.env에LASR_API또는OPENROUTER_API_KEY가 있는지 확인
여러 실행 스크립트가 env 이름을 하드코딩합니다.
- EDL →
edl - ICSR →
icsr - LLM-SR →
llmsr - LaSR Python env →
lasr
그래서 가급적 루트 Makefile로 환경을 만드는 것이 안전합니다.
- ICSR는 Hydra config의
root와 데이터 경로 확인 필요 - LLM-SR은
spec_path,log_path,.env, API/서버 설정 확인 필요 - LaSR는 Julia 패키지/프롬프트 경로 확인 필요
- 루트
.env: EDL / ICSR / LaSR가 참조 custom_llm_sr/.env: LLM-SR가 직접 참조
이 위치가 틀리면 키를 넣어도 실험이 바로 실패할 수 있습니다.
LLM-SR 쪽은 Python 3.12 경로 충돌을 피하려고 환경 변수를 정리하는 코드와 스크립트가 이미 들어 있습니다. 가능하면 Python 3.11 기준으로 맞추는 것이 안전합니다.
하위 README 예시가 현재 파일 트리와 완전히 일치하지 않을 수 있습니다. 실제 실행 전에는 항상 아래 순서로 확인하는 것이 좋습니다.
run.sh/run_ode_*.shmain.py또는example.jlconf/,specs/,data/
custom_edlcustom_icsr
custom_edl/run_ode_101.shcustom_icsr/run_ode_101.shcustom_llm_sr/run_ode_101.sh
- 마지막에
custom_lasr추가
make edl
cd custom_edl
./run_ode_101.shmake icsr
cd custom_icsr
./run_ode_101.shmake llmsr
cd custom_llm_sr
bash run_ode_101.shmake lasr
cd custom_lasr
julia example.jlcustom_edl/README.mdcustom_icsr/README.mdcustom_llm_sr/README.mdcustom_lasr/README.md
루트 README는 재현 시작점으로 쓰고, 세부 실험 설정은 반드시 각 서브프로젝트 내부 문서를 함께 확인하세요.