Eclipse Deeplearning4J (DL4J) 에코시스템은 JVM 기반 딥 러닝 애플리케이션의 모든 요구 사항을 지원하기 위한 프로젝트 세트입니다. 이는 원시 데이터로 시작하여 어디서든 어떤 형식이든 로드하고 전처리하여 다양한 단순 및 복잡한 딥 러닝 네트워크를 구축하고 조정하는 것을 의미합니다.
Deeplearning4J는 JVM에서 실행되므로 Scala, Kotlin, Clojure 등과 같은 Java 이외의 다양한 JVM 기반 언어와 함께 사용할 수 있습니다.
DL4J 스택은 다음으로 구성됩니다.
- DL4J : 맞춤형 레이어를 포함한 다양한 레이어로 MultiLayerNetworks 및 ComputationGraph를 구축하기 위한 고급 API입니다. tf.keras 모델(1.0.0-beta7 기준)을 포함하여 h5에서 Keras 모델 가져오기를 지원하고 Apache Spark에 대한 분산 교육도 지원합니다.
- ND4J : 500개 이상의 수학, 선형 대수 및 딥 러닝 연산을 갖춘 범용 선형 대수 라이브러리입니다. ND4J는 OpenBLAS, OneDNN(MKL-DNN), cuDNN, cuBLAS 등과 같은 라이브러리를 통해 CPU(AVX2/512) 및 GPU(CUDA) 지원 및 가속을 제공하는 고도로 최적화된 C++ 코드베이스 LibND4J를 기반으로 합니다.
- SameDiff : ND4J 라이브러리의 일부인 SameDiff는 자동 차별화/딥 러닝 프레임워크입니다. SameDiff는 TensorFlow 그래프 모드와 유사한 그래프 기반(정의 후 실행) 접근 방식을 사용합니다. Eager 그래프(TensorFlow 2.x Eager/PyTorch) 그래프 실행이 계획되어 있습니다. SameDiff는 TensorFlow 고정 모델 형식 .pb(protobuf) 모델 가져오기를 지원합니다. ONNX, TensorFlow SavedModel 및 Keras 모델에 대한 가져오기가 계획되어 있습니다. Deeplearning4j는 또한 사용자 정의 레이어 및 손실 함수를 쉽게 작성할 수 있도록 완전한 SameDiff 지원을 제공합니다.
- DataVec : 다양한 형식과 파일(HDFS, Spark, 이미지, 비디오, 오디오, CSV, Excel 등)의 기계 학습 데이터를 위한 ETL
- LibND4J : 모든 것을 뒷받침하는 C++ 라이브러리입니다. JVM이 기본 배열 및 작업에 액세스하는 방법에 대한 자세한 내용은 JavaCPP를 참조하세요.
- Python4J : JVM용 번들 cpython 실행
DL4J 에코시스템의 모든 프로젝트는 Windows, Linux 및 macOS를 지원합니다. 하드웨어 지원에는 CUDA GPU(OSX를 제외한 10.0, 10.1, 10.2), x86 CPU(x86_64, avx2, avx512), ARM CPU(arm, arm64, armhf) 및 PowerPC(ppc64le)가 포함됩니다.
커뮤니티 지원
프로젝트 지원을 원하시면 https://community.konduit.ai/를 방문해주세요.
프로젝트에서 Eclipse Deeplearning4J 사용
Deeplearning4J에는 꽤 많은 종속성이 있습니다. 이러한 이유로 우리는 빌드 도구를 사용한 사용만 지원합니다.
< dependencies >
< dependency >
< groupId >org.deeplearning4j</ groupId >
< artifactId >deeplearning4j-core</ artifactId >
< version >1.0.0-M2.1</ version >
</ dependency >
< dependency >
< groupId >org.nd4j</ groupId >
< artifactId >nd4j-native-platform</ artifactId >
< version >1.0.0-M2.1</ version >
</ dependency >
</ dependencies >
CPU 백엔드에서 Deeplearning4J를 사용하려면 pom.xml 파일에 이러한 종속성을 추가하세요. 새로운 Maven 프로젝트를 처음부터 시작하려는 경우 예제 저장소에서 전체 독립형 프로젝트 예제를 사용할 수 있습니다.
코드 샘플
DL4J는 모노 저장소에 여러 모듈이 포함된 다면적인 프로젝트이기 때문에 다양한 모듈의 다양한 사용법을 맛보기 위해 예제를 살펴보는 것이 좋습니다. 아래에서는 각 모듈의 예시에 대한 링크를 제공합니다.
- ND4J: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/nd4j-ndarray-examples
- DL4J: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/dl4j-examples
- 사메디프: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/samediff-examples
- 데이터벡: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/data-pipeline-examples
- Python4j: https://deeplearning4j.konduit.ai/python4j/tutorials/quickstart
다른 프레임워크에서 모델을 실행하려는 사용자는 다음을 참조하세요.
- Onnx: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/onnx-import-examples
- 텐서플로우/케라스: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/tensorflow-keras-import-examples
문서, 가이드 및 튜토리얼
http://deeplearning4j.konduit.ai/에서 Deeplearning4J 및 생태계의 다른 라이브러리에 대한 공식 문서를 찾을 수 있습니다.
몇 가지 예를 원하시나요?
다양한 예제를 사용할 수 있는 별도의 저장소가 있습니다: https://github.com/eclipse/deeplearning4j-examples
소스에서 빌드
사전 컴파일된 공식 릴리스를 사용하는 것이 좋습니다(위 참조). 하지만 소스에서 빌드하려면 먼저 여기(https://deeplearning4j.konduit.ai/multi-project/how-to-guides/build-from-source)에서 소스에서 빌드하기 위한 전제 조건을 살펴보세요. CPU 및 GPU 빌드에 대한 다양한 지침을 찾을 수 있습니다. 추가 도움이 필요하면 포럼으로 이동하세요.
테스트 실행
테스트를 실행하려면 플랫폼 테스트 모듈을 참조하세요. 이 모듈은 jdk 11에서만 실행됩니다(주로 이전 스칼라 버전 + JDK 17의 스파크 및 버그로 인해).
platform-tests를 사용하면 다양한 백엔드에 대해 dl4j를 실행할 수 있습니다. 명령줄에서 지정할 수 있는 몇 가지 속성은 다음과 같습니다.
- backend.artifactId: 기본값은 nd4j-native이며 CPU에서 테스트를 실행합니다. nd4j-cuda-11.6과 같은 다른 백엔드를 지정할 수 있습니다.
- dl4j.version: 테스트가 실행되는 dl4j 버전을 변경할 수 있습니다. 기본값은 1.0.0-SNAPSHOT입니다.
더 많은 매개변수는 여기에서 찾을 수 있습니다:
| < 플랫폼 .classifier> ${javacpp.platform} </ 플랫폼 .classifier> |
Intellij IDEA에서 프로젝트 실행:
- jdk 9 이상에서는 https://stackoverflow.com/questions/45370178/exporting-a-package-from-system-module-is-not-allowed-with-release를 따르십시오.
- 모든 nd4j-shade 하위 모듈을 무시합니다. 각 폴더를 마우스 오른쪽 버튼으로 클릭하고 Maven -> 프로젝트 무시를 클릭합니다.
특허
아파치 라이선스 2.0
상업적 지원
Deeplearning4J는 Konduit KK 팀에 의해 적극적으로 개발되었습니다.
[상업적 지원이 필요한 경우 언제든지 문의해 주세요. [email protected]로