ONNX Based Generative AI LLMs in Java with Project Babylon by Adam Sotona
- Project Babylon은 Java 개발자가 Java의 강력한 기능을 활용하여 코드를 모델링하고, 이를 백그라운드에서 ONNX와 같은 외부 코드 모델로 변환하는 것을 목표로 합니다. 🌉
@CodeReflection 어노테이션을 통해 Java 메서드의 코드 모델을 클래스에 포함시켜 런타임에 접근하고 조작할 수 있는 코드 리플렉션 기능을 제공합니다. 🔍
- Babylon의 코드 모델은 연산, 속성, 타입, 값 등을 시각적으로 표현하며, 중첩된 바디와 블록 구조로 복잡한 Java 코드를 그래프 형태로 나타냅니다. 🏗️
- 부분 평가 변환(Partial Evaluation Transformation)은 상수 크기 루프 언롤링, 상수 평가, 코드 선형화 및 SSA(Single Static Assignment) 형태로의 변환을 통해 코드 모델을 단순화합니다. ⚙️
- ONNX(Open Neural Network Exchange)는 머신러닝 모델 패키징 및 공유를 위한 개방형 표준으로, 텐서 기반 수학 연산을 포함하며 ONNX 런타임을 통해 가속화된 실행을 지원합니다. 🧠
- Java ONNX Script 라이브러리는 Java 개발자가 ONNX 모델을 생성하고 ONNX 런타임과 통신할 수 있도록 돕는 개념 증명(PoC) 라이브러리입니다. 🔗
- 이 프로젝트는 Java 소스 코드에서 시작하여 Babylon의 코드 리플렉션과 ONNX 통합을 통해 실행 가능한 AI 모델에 도달하는 실용적인 사례 연구를 제시합니다. 🚀
- 변환된 코드 모델은 바이트코드 생성기를 통해 직접 실행 가능한 메서드 핸들로 변환되어, 재컴파일 없이 최적화된 코드를 즉시 활용할 수 있습니다. ✨