Emmi-AI/noether: 엔지니어링 AI를 위한 오픈 소프트웨어 프레임워크
요약
Emmi AI가 개발한 Noether는 엔지니어링 분야를 위한 오픈 소프트웨어 프레임워크입니다. 트랜스포머 빌딩 블록을 기반으로 산업 시뮬레이션 모델 구축, 훈련 및 운영 전 과정을 지원하며, 모듈형 아키텍처와 하드웨어 비종속성을 갖추고 있습니다. CPU, Apple Silicon(MPS), NVIDIA GPU 등 다양한 환경에서 작동하여 엔지니어링 수직 분야에 최적화된 산업 등급 솔루션을 제공합니다.
핵심 포인트
- 엔지니어링 AI 전용 오픈 소스 프레임워크 Noether 소개
- 트랜스포머 빌딩 블록 기반의 모듈형 아키텍처 채택
- CPU, MPS, NVIDIA GPU 등 하드웨어에 구애받지 않고 실행 가능
- 산업 시뮬레이션 및 엔지니어링 수직 분야에 최적화됨
Noether는 Emmi AI가 개발한 엔지니어링 AI를 위한 오픈 소프트웨어 프레임워크입니다. 트랜스포머 빌딩 블록(transformer building blocks)을 기반으로 구축되어, 팀이 엔지니어링 수직 분야 전반에 걸쳐 산업 시뮬레이션 모델을 구축, 훈련 및 운영할 수 있도록 전체 엔지니어링 스택을 제공하며, 컴포넌트 재설계나 사내 딥러닝(deep learning) 팀의 필요성을 없애줍니다. 모듈형 트랜스포머 아키텍처: 물리 시스템에 최적화된 빌딩 블록을 기반으로 구축되었습니다.하드웨어 비종속성 (Hardware Agnostic): CPU, MPS (Apple Silicon), NVIDIA GPU 전반에서 원활하게 실행됩니다.산업 등급 (Industrial Grade): 고정밀 산업 시뮬레이션 및 엔지니어링 수직 분야를 위해 설계되었습니다.확장 준비 완료 (Ready for Scale): Multi-GPU 및 SLURM 클러스터 환경에 대한 내장 지원을 갖추고 있습니다. - 설치(Installation) - 빠른 시작(Quickstart) - 레시피(Recipes) - 성능 벤치마크(Performance Benchmarks) - 기여하기(Contributing) - 지원 시스템(Supported systems) - 라이선싱(Licensing) - 추천사례(Endorsements) - 인용(Citing) 프레임워크는 소스 코드 또는 사전 구축된 패키지 모두를 통해 사용할 수 있습니다. - 시스템에 uv를 패키지 관리자로 설치합니다. - 코드를 다루고 싶다면 원하는 폴더로 레포지토리를 복제합니다: git clone https://github.com/Emmi-AI/noether.git 설치 가능한 패키지는 pip을 통해 제공되며 다음과 같이 설치할 수 있습니다: pip install emmiai-noether 또는 uv를 사용하는 경우: uv pip add emmiai-noether 사전 구축된 패키지를 설치하지 않고 소스 코드를 직접 다루는 것을 선호하는 경우. ## Linux 및 CUDA NVIDIA GPU에서 실행하거나 사용자 지정 CUDA 경로가 필요한 경우, 먼저 환경 변수를 구성해야 합니다. 아래 명령을 실행하기 전에 반드시 고급 리눅스 설정 가이드(Advanced Linux Setup Guide)를 따르십시오. 레포지토리를 복제한 후 새로운 가상 환경을 생성하고 핵심 종속성을 동기화합니다: uv venv && source .venv/bin/activate uv sync 참고: 초기 설치에는 몇 분이 걸릴 수 있습니다. 소요 시간은 하드웨어와 네트워크 속도에 따라 달라집니다. 테스트를 실행하여 설치를 검증하십시오 (모듈 임포트 오류가 발생하는 경우 설치가 불완전하다는 의미입니다):
테스트가 통과하면 (경고는 로그로 기록되어도 괜찮음) 모든 준비가 완료된 것입니다!
GitHub에서 Noether를 직접 설치할 수도 있습니다:
uv add "emmiai-noether @ git+https://github.com/Emmi-AI/noether.git"
이렇게 하면 최신 업데이트에 항상 최신 상태를 유지하고, 빌드된 패키지가 출시되기를 기다릴 필요가 없습니다.
만약 가상 환경(venv)이 의도한 대로 구성되지 않은 상황일 수 있습니다. 이를 수정하려면 다음을 수행하세요:
-
터미널에서 기존 환경 비활성화:
deactivate실행 -
기존
.venv제거
(선택적으로 uv.lock 추가):
:rm -rf .venv uv.lock
-
[선택 사항] uv 캐시 정리:
uv cache clean -
새 venv 생성 및 활성화:
uv venv && source .venv/bin/activate -
[선택 사항] 삭제된 경우, 새로운
uv.lock파일 생성:
:uv lock -
[선택 사항] 기여자(contributor)인 경우:
pre-commit install
uvx를 사용하여 프로젝트 스캐폴딩을 바로 시작할 수 있습니다:
uvx --from emmiai-noether noether-init my_project
cd my_project
uv run noether-train --hp my_project/configs/base_experiment.yaml
또는 emmiai-noether가 이미 설치되어 있는 경우:
uv run noether-init my_project
cd my_project
uv run noether-train --hp my_project/configs/base_experiment.yaml
모든 옵션과 생성된 프로젝트 구조는 스캐폴딩 튜토리얼을 참조하세요.
특정 엔지니어링 작업을 위한 종단 간(End-to-end) 학습 및 평가 예시.
사전 설정 기반 CLI를 사용하여 DrivAerML 공기역학 벤치마크에서 AB-UPT를 학습합니다. CPU, GPU, Apple Silicon용 사용 가능한 모델 크기를 제공합니다.
워크스루: AB-UPT Showcase 문서출처: recipes/aero_cfd/showcase/
데이터셋: EmmiAI/DrivAerML_subsampled_10x
cd recipes/aero_cfd/
export PYTHONPATH=$(git -C ../.. rev-parse --show-toplevel)/recipes:$PYTHONPATH
python -m showcase.cli train \
...
| Recipe | 설명 | 빠른 링크 |
|---|---|---|
| AB-UPT Showcase | AB-UPT를 활용하여 훈련(training), 평가(evaluation) 및 VTK 내보내기(export)를 위한 프리셋 기반 CLI를 제공하는 DrivAerML에서의 사용 사례. | code · docs |
| 외부 공기역학 (External Aerodynamics) | AB-UPT, UPT, Transformer, Transolver를 아우르는 다중 데이터셋 항공 유체 역학 계산 (aero CFD) (ShapeNet-Car, AhmedML, DrivAerML, DrivAerNet++, Emmi-Wing). | code · walkthrough · scripts |
| 유체 열전달 (Fluid Heat Transfer) | SIMSHIFT 히트싱크 벤치마크에서의 열전달을 위한 신경 가짜(Neural surrogates) -- 히트싱크 기하학으로부터 3D 속도, 온도 및 압력 필드 예측. | code · docs |
Noether Recipe Zoo에서 전체 목록을 확인하세요.
ShapeNet-Car 데이터셋에 대한 AB-UPT 모델의 하드웨어 구성별 훈련 시간.
참고
모든 벤치마크는 순수 계산 성능의 기준선(baseline)을 설정하기 위해 FP32 정밀도를 사용하여 수행되었습니다.
| 하드웨어 | 구성 | 정밀도 | 시간 | 속도 향상 |
|---|---|---|---|---|
| MacBook Pro M3 Max | 1x MPS | FP32 | 135m | 1.0x |
| RTX Pro 4500 (Blackwell) | 1x GPU | FP32 | 26m | 5.2x |
| RTX Pro 4500 (Blackwell) | 2x GPU | FP32 | 8m | 16.8x |
| NVIDIA H100 | 1x GPU | FP32 | 5.7m | 23.6x |
다음 표준을 따릅니다:
-
Python에서 타입이 지정된 코딩(typed coding) 사용.
-
새로운 기능과 모듈에 대한 문서를 작성합니다:
-
더 큰 모듈의 경우
docs/아래에 자동 생성되지 않은 문서가 업데이트되었는지 확인하세요. -
작은 기능의 경우 명확한 API 문서를 작성하는 것만으로 충분하며 필수적입니다.
-
더 큰 모듈의 경우 다음을 수행하기 전에 문서가 업데이트되었는지 확인하세요:
-
pytest -q tests/를 통해 테스트 실행. -
커밋하기 전에:
-
프리커밋 훅(pre-commit hooks)이 비활성화되지 않았고 모든 커밋에서 실행 가능한지 확인합니다.
우리는 linter 및 formatter로ruff를, 타입 검사기(type checking)로mypy를 사용하고 있습니다. 이들의 설정은 프로젝트 루트의 pyproject.toml에 정의되어 있습니다. -
다음을 통해 테스트 실행:
-
풀 리퀘스트(PRs) 생성은
main브랜치에 올라갈 모든 수신 변경 사항에 대한 필수 단계입니다.
branch.- PR이 병합되려면 최소한 한 명의 핵심 유지 관리자(core maintainer)가 승인해야 합니다.
- 모든 테스트는 성공적이어야 합니다.
pre-commit을 설치하려면 다음 명령어를 실행하세요:
pre-commit install
모든 파일에 대해 pre-commit 구성을 실행하려면 다음을 사용할 수 있습니다:
pre-commit run --all-files
특정 파일에 대해 pre-commit 구성을 실행하려면 다음을 사용하세요:
pre-commit run --files /your/file/path1.py /your/file/path2.py
버그가 있는 경우 해당 템플릿을 사용하여 이슈를 생성하세요.
기능 요청의 경우, 제안된 기능에 대한 명확한 설명을 담아 PR을 제출할 수 있습니다. 이 경우 가이드라인을 따라야 하며, 그렇지 않다면 이슈로 기능 요청을 하세요. 그렇게 할 경우, 저희가 백로그(backlog)에 추가하는 것을 고려하겠습니다.
- Mark
src/디렉토리를Sources Root로 지정하세요
(폴더에서 마우스 오른쪽 버튼 클릭 ->Mark Directory as)
설정 -> 에디터 -> 코드 스타일 -> Python -> 탭 및 들여쓰기 ->Continuation indent를 8에서 4로 변경하세요. - 설정 -> 에디터 -> 코드 스타일 -> Python -> 공백 -> 연산자 주변 ->Power operator (**)
참고할 만한 점은 저희가 macOS와 Linux 환경으로 작업한다는 것이므로, Windows에서 문제가 발생하는 경우 현재는 직접 해결 방법을 찾아야 합니다.
주의사항
요약: 연구 및 개발 ✅ | 상업적 배포 ❌ (상업용 라이선스 미사용)
Noether Framework는 Non-Production License(Mistral AI의 MNPL 기반)로 라이선스가 부여되었습니다. 이는 사용자가 이 프레임워크를 자유롭게 사용, 수정 및 연구할 수 있다는 의미이지만, 상업적/프로덕션 사용에는 Emmi AI로부터 별도의 상업용 라이선스가 필요합니다.
저희는 지속 가능한 비즈니스 성장을 추구하면서 개방형 AI 혁신에 전념하고 있습니다. 상업적 라이선싱의 경우 [email protected]로 문의해 주세요.
전체 라이선스는 여기에서 읽어보세요.
|
|
|
|
|
|
만약 연구 또는 산업 응용 분야에 Noether를 사용한다면, 이 저장소를 인용해 주시기 바랍니다.
곧 저희의 예정된 ArXiv 출판물에 대한 공식 BibTeX 항목이 여기에 제공될 것입니다.
Bleeker, Maurits, Hennerbichler, Markus, 및 Kuksa, Pavel. Noether: 엔지니어링 AI를 위한 PyTorch 기반 프레임워크.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기