개요
Tesseract-Torch는 여러 언어로 작성된 과학 계산 코드를 Tesseract Core를 통해 컨테이너화한 뒤 PyTorch 자동미분 그래프에 연결하는 가벼운 확장이다. apply_tesseract(tesseract, inputs)라는 단일 API로 Tesseract를 PyTorch 연산처럼 호출할 수 있다. 표준 PyTorch autograd API를 통해 역전파와 정전파 자동미분을 모두 지원한다. 미분 대상은 Tesseract의 Pydantic 스키마에서 명시적으로 지정하며, 실제 미분은 Tesseract의 VJP/JVP 엔드포인트에 의존한다.
핵심 포인트
- Tesseract Core는 C++, Julia, Fortran, Python 등 이기종 과학 계산 코드를 Docker 컨테이너로 감싸 CLI·REST API·Python SDK로 통일한다.
- 컴포넌트가 Jacobian, VJP(vector-Jacobian product), JVP(Jacobian-vector product)를 노출하면 여러 단계의 과학 계산 파이프라인을 미분 가능하게 연결할 수 있다.
apply_tesseract는 PyTorch 텐서를 NumPy 배열로 변환해 Tesseract에 전달하고, 결과를grad_fn이 연결된 텐서로 반환한다.- 스키마에서
Differentiable[...]로 감싼 입력·출력 필드만 자동미분 대상이 된다. 나머지 값은 PyTorch autograd에서 상수로 취급된다. .backward(),torch.autograd.grad,torch.autograd.forward_ad와 함께 사용할 수 있지만torch.func.vjp/jvp/grad/vmap변환 내부에서는 사용할 수 없다.- 역전파에는
vector_jacobian_product, 정전파에는jacobian_vector_product엔드포인트가 필요하며, 없으면 해당 미분 모드에서NotImplementedError가 발생한다. 순전파 자체는 엔드포인트가 없어도 동작한다. - Docker와 Python 3.10 이상이 필요하고, Tesseract-Torch는 Apache License 2.0으로 공개되었다. 게시글은 2026년 6월 23일 v0.1.0 첫 정식 릴리스를 언급한다.
왜 중요한가
과학 연구 코드가 언어와 프레임워크별로 분산되어 있어도 기존 코드를 전부 PyTorch로 다시 작성하지 않고 학습·최적화 파이프라인에 포함할 수 있는 경로를 제공한다. 다만 자동미분 가능성은 Tesseract가 요구되는 VJP/JVP 엔드포인트를 실제로 구현했는지와 스키마가 미분 필드를 올바르게 표시했는지에 달려 있다.
후속으로 볼 링크와 키워드
- 원문: https://discuss.pytorch.kr/t/tesseract-torch-pytorch/11177
- Tesseract-Torch 문서: https://docs.pasteurlabs.ai/projects/tesseract-torch/latest/
- Tesseract-Torch GitHub: https://github.com/pasteurlabs/tesseract-torch
- Tesseract Core: https://github.com/pasteurlabs/tesseract-core
- API: https://docs.pasteurlabs.ai/projects/tesseract-torch/latest/content/api.html#tesseract_torch.apply_tesseract
- 관련 프로젝트: Tesseract-JAX, Tesseract-Streamlit
- 키워드:
Tesseract Core,Differentiable,VJP,JVP,PyTorch autograd,containerized scientific computing