deepjavalibrary/djl

An Engine-Agnostic Deep Learning Framework in Java

Deep Java Library (DJL) – 빠른 개요

정의 – DJL은 Java 우선의 고수준 딥러닝 프레임워크로, 인기 있는 네이티브 엔진(TensorFlow, PyTorch, MXNet 등) 위에 구축되었습니다. Java 개발자는 새로운 언어를 배우거나 일반적인 IDE를 떠나지 않고도 신경망을 로드하고, 훈련하고, 추론을 실행할 수 있습니다.

주요 개념

  • 엔진 독립적 – 런타임에 엔진을 선택합니다. 코드 변경 없이 TensorFlow↔PyTorch↔MXNet을 전환할 수 있습니다.
  • 자동 CPU/GPU 선택 – DJL이 하드웨어를 감지하고 최적의 백엔드를 선택합니다.
  • 모델 주 통합 – 사전 훈련된 모델은 간단한 Criteria 빌더로 검색됩니다.
  • 전체 훈련 지원 – 내장 블록으로 네트워크를 정의하고, Trainer를 만들고, 고전적인 훈련 루프를 실행할 수 있습니다.

일반적인 사용법

// 추론 – 사전 훈련된 객체 감지 모델 선택
Criteria<Image, Classifications> criteria = Criteria.builder()
    .optApplication(Application.CV.OBJECT_DETECTION)
    .setTypes(Image.class, Classifications.class)
    .optFilter("backbone", "resnet50")
    .build();
Image img = ImageFactory.getInstance().fromUrl("http://…");
try (ZooModel<Image, Classifications> model = criteria.loadModel();
     Predictor<Image, Classifications> pred = model.newPredictor()) {
    Classifications result = pred.predict(img);
    // …결과 처리…
}
// 훈련 – MNIST의 작은 MLP
Block block = new Mlp(28*28, 10, new int[]{128,64});
Model model = Model.newInstance("mlp");
model.setBlock(block);
Dataset train = new Mnist.Builder().setUsage(Usage.TRAIN).build();
Dataset test  = new Mnist.Builder().setUsage(Usage.TEST).build();
TrainingConfig cfg = setupTrainingConfig();
Trainer trainer = model.newTrainer(cfg);
trainer.initialize(new Shape(1, 28*28));
EasyTrain.fit(trainer, epochs, train, test);
model.save(modelDir, "mlp");

대상 독자 – 딥러닝을 실험하고, 기업 서비스에 추론을 내장하고, 또는 JVM 생태계를 벗어나지 않고 종단 간 ML 파이프라인을 구축하려는 Java 개발자.

더 알아보기 –

  • 공식 문서: https://docs.djl.ai/
  • DJL의 "Dive into Deep Learning" (Java 버전)
  • Javadoc API 참조
  • 커뮤니티 Slack, GitHub 토론, 중국어 업데이트용 Zhihu 칼럼.

라이선스 – Apache-2.0, 오픈소스 및 상업 프로젝트 모두에서 사용할 수 있습니다.


모든 세부 사항은 리포지토리의 README에서 직접 가져왔습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트