Skip to content

Bon99yun/DoLQ_baseline_model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DoLQ Baseline Model Workspace

이 저장소는 하나의 프레임워크가 아니라, 식 발견 / symbolic regression baseline 4종을 재현하기 위한 워크스페이스입니다.

루트에서 해야 할 일은 크게 두 가지입니다.

  1. Makefile로 각 baseline용 환경을 만든다.
  2. 원하는 baseline 디렉토리로 들어가 준비된 실행 스크립트를 돌린다.

이 README는 논문 소개보다 재현 절차에 집중합니다.


1. 포함된 baseline

  • custom_edl/ — EDL
  • custom_icsr/ — ICSR
  • custom_llm_sr/ — LLM-SR
  • custom_lasr/ — LaSR (Julia 포함)

각 프로젝트는 실행 방식과 의존성이 다릅니다. 공통 진입점은 루트 Makefile입니다.


2. 가장 먼저 할 일

전체 환경 설치

루트에서:

make

이 명령은 Makefile 기준으로 아래 순서의 설치를 수행합니다.

  • edl
  • icsr
  • llmsr
  • lasr

개별 설치도 가능합니다.

make edl
make icsr
make llmsr
make lasr

필요 조건

  • Conda 필요
  • uv 필요 (llmsr 설치 시 사용, 없으면 Makefile이 설치 시도)
  • Julia 1.11.x 필요 (lasr 설치 시 사용, 없으면 Makefile이 설치 시도)
  • 일부 실험은 GPU, 로컬 LLM 서버, 또는 API 키 필요

.env / API 키 설정도 사실상 필수

현재 이 저장소는 baseline별 API 키 설정이 없으면 정상 실행이 어려운 구조입니다.

실제로 코드가 보는 위치는 다음과 같습니다.

  • EDL: 루트 .env에서 EDL_API 또는 OPENROUTER_API_KEY
  • ICSR: 루트 .env 또는 설정 파일의 api_key_path; 환경변수 우선순위는 ICSR_APIOPENROUTER_API_KEYOPENAI_API_KEY
  • LLM-SR: custom_llm_sr/.env에서 로드되며, API 호출 시 LLMSR_API 또는 OPENROUTER_API_KEY 사용
  • LaSR: 루트 .envLASR_API, 없으면 OPENROUTER_API_KEY

즉, 실험 전에 API 값을 먼저 채워 넣는 작업이 필요합니다.

가장 안전한 방식은 아래 두 군데를 준비하는 것입니다.

1) 루트 .env

위치:

/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

2) LLM-SR 전용 .env

위치:

/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

후 다시 설치하는 것이 가장 단순합니다.


3. 추천 재현 순서

처음이면 아래 순서를 권장합니다.

가장 쉬운 순서

  1. make edl 또는 make icsr로 Python 환경 하나만 먼저 설치
  2. 해당 디렉토리의 run.sh 또는 run_ode_*.sh 실행
  3. 출력 디렉토리가 생기는지 확인
  4. 그 다음 llmsr, 마지막에 lasr 진행

왜 이렇게 하는가

  • llmsruv, 서버/API 설정, .env 같은 추가 변수가 있습니다.
  • lasr는 Julia까지 포함되어 설치 복잡도가 가장 높습니다.

4. Baseline별 실용 실행 가이드

4.1 EDL (custom_edl/)

무엇을 실행하면 되나

가장 직접적인 진입점은:

cd custom_edl
./run.sh

이 스크립트는:

  • 현재 디렉토리를 custom_edl/로 맞추고
  • PYTHONPATH를 비우고
  • /home/work/miniconda3/envs/edl/bin/python main.py를 직접 실행합니다

즉, Conda env 이름은 edl이어야 합니다.

ODE 재현

준비된 예시는:

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/요청 제한 확인
  • 루트 .envEDL_API 또는 OPENROUTER_API_KEY가 들어 있는지 확인

4.2 ICSR (custom_icsr/)

무엇을 실행하면 되나

기본 진입점:

cd custom_icsr
./run.sh

이 스크립트는:

  • conda icsr 환경 활성화
  • PYTHONPATH 초기화
  • /home/work/miniconda3/envs/icsr/bin/python main.py 실행

즉, Conda env 이름은 icsr이어야 합니다.

ODE 재현

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용 키가 있는지 확인

4.3 LLM-SR (custom_llm_sr/)

LLM-SR은 다른 두 Python 프로젝트보다 실행 전에 확인할 것이 조금 더 많습니다.

실행 방식 1: 준비된 ODE 스크립트 사용

가장 실용적인 진입점은:

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)에 대해 병렬 실행

실행 방식 2: 직접 main.py 실행

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가 있는지 확인

4.4 LaSR (custom_lasr/)

LaSR는 Julia가 포함되어 있어 설치와 실행 흐름이 다릅니다.

가장 짧은 smoke test

cd custom_lasr
julia example.jl

example.jl은:

  • Pkg.activate(".")
  • Pkg.instantiate()
  • 예제 데이터 생성
  • equation_search(...) 실행
  • logs/lasr_runs에 TensorBoard 로그 기록

루트에서 설치

make lasr

이 과정은:

  • conda lasr Python 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 설정이 필요한지
  • 루트 .envLASR_API 또는 OPENROUTER_API_KEY가 있는지 확인

5. 재현 시 가장 자주 막히는 지점

1) conda env 이름 불일치

여러 실행 스크립트가 env 이름을 하드코딩합니다.

  • EDL → edl
  • ICSR → icsr
  • LLM-SR → llmsr
  • LaSR Python env → lasr

그래서 가급적 루트 Makefile로 환경을 만드는 것이 안전합니다.

2) 경로 문제

  • ICSR는 Hydra config의 root와 데이터 경로 확인 필요
  • LLM-SR은 spec_path, log_path, .env, API/서버 설정 확인 필요
  • LaSR는 Julia 패키지/프롬프트 경로 확인 필요

2-1) .env 위치 착각

  • 루트 .env: EDL / ICSR / LaSR가 참조
  • custom_llm_sr/.env: LLM-SR가 직접 참조

이 위치가 틀리면 키를 넣어도 실험이 바로 실패할 수 있습니다.

3) Python 버전 충돌

LLM-SR 쪽은 Python 3.12 경로 충돌을 피하려고 환경 변수를 정리하는 코드와 스크립트가 이미 들어 있습니다. 가능하면 Python 3.11 기준으로 맞추는 것이 안전합니다.

4) 문서와 실제 트리 차이

하위 README 예시가 현재 파일 트리와 완전히 일치하지 않을 수 있습니다. 실제 실행 전에는 항상 아래 순서로 확인하는 것이 좋습니다.

  1. run.sh / run_ode_*.sh
  2. main.py 또는 example.jl
  3. conf/, specs/, data/

6. 어떤 baseline부터 돌릴지 빠르게 결정하기

빠르게 Python baseline 하나만 확인하고 싶다

  • custom_edl
  • custom_icsr

ODE용 준비된 스크립트를 바로 쓰고 싶다

  • custom_edl/run_ode_101.sh
  • custom_icsr/run_ode_101.sh
  • custom_llm_sr/run_ode_101.sh

Julia 기반 baseline도 포함해서 비교하고 싶다

  • 마지막에 custom_lasr 추가

7. 최소 실행 요약

EDL

make edl
cd custom_edl
./run_ode_101.sh

ICSR

make icsr
cd custom_icsr
./run_ode_101.sh

LLM-SR

make llmsr
cd custom_llm_sr
bash run_ode_101.sh

LaSR

make lasr
cd custom_lasr
julia example.jl

8. 추가로 볼 문서

  • custom_edl/README.md
  • custom_icsr/README.md
  • custom_llm_sr/README.md
  • custom_lasr/README.md

루트 README는 재현 시작점으로 쓰고, 세부 실험 설정은 반드시 각 서브프로젝트 내부 문서를 함께 확인하세요.

About

Symbolic-regression baseline workspace for reproducing four equation-discovery methods used in DoLQ ODE experiments.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors