TensorFlow 자바 설치

TensorFlow Java는 기계 학습 모델을 구축, 학습 및 배포하기 위해 모든 JVM에서 실행할 수 있습니다. 그래프 또는 열성 모드에서 CPU 및 GPU 실행을 모두 지원하며 JVM 환경에서 TensorFlow를 사용하기 위한 풍부한 API를 제공합니다. Java 및 Scala 및 Kotlin과 같은 기타 JVM 언어는 전 세계 대기업 및 중소기업에서 자주 사용되므로 TensorFlow Java는 대규모 머신러닝을 채택하기 위한 전략적 선택입니다.

요구사항

TensorFlow Java는 Java 8 이상에서 실행되며 기본적으로 다음 플랫폼을 지원합니다.

  • 우분투 16.04 이상; 64비트, x86
  • macOS 10.12.6(Sierra) 이상; 64비트, x86
  • 윈도우 7 이상; 64비트, x86

버전

TensorFlow Java에는 TensorFlow 런타임 과 별개로 자체 릴리스 주기가 있습니다. 결과적으로 해당 버전은 실행되는 TensorFlow 런타임 버전과 일치하지 않습니다. TensorFlow Java 버전 관리 표를 참조하여 사용 가능한 모든 버전과 TensorFlow 런타임과의 매핑을 나열하세요.

유물

프로젝트에 TensorFlow Java를 추가하는 방법에는 여러 가지가 있습니다. 가장 쉬운 방법은 TensorFlow Java Core API와 지원되는 모든 플랫폼에서 실행하는 데 필요한 기본 종속성을 모두 포함하는 tensorflow-core-platform 아티팩트에 종속성을 추가하는 것입니다.

순수 CPU 버전 대신 다음 확장 중 하나를 선택할 수도 있습니다.

  • tensorflow-core-platform-mkl : 모든 플랫폼에서 Intel® MKL-DNN 지원
  • tensorflow-core-platform-gpu : Linux 및 Windows 플랫폼에서 CUDA® 지원
  • tensorflow-core-platform-mkl-gpu : Linux 플랫폼에서 Intel® MKL-DNN 및 CUDA®를 지원합니다.

또한 tensorflow-framework 라이브러리에 대한 별도의 종속성을 추가하여 JVM에서 TensorFlow 기반 기계 학습을 위한 풍부한 유틸리티 세트의 이점을 누릴 수 있습니다.

메이븐으로 설치하기

Maven 애플리케이션에 TensorFlow를 포함하려면 해당 아티팩트 에 대한 종속성을 프로젝트의 pom.xml 파일에 추가하세요. 예를 들어,

<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>tensorflow-core-platform</artifactId>
  <version>0.3.3</version>
</dependency>

종속성 수 줄이기

tensorflow-core-platform 아티팩트에 대한 종속성을 추가하면 지원되는 모든 플랫폼에 대한 기본 라이브러리를 가져오므로 프로젝트 크기가 크게 늘어날 수 있다는 점에 유의하는 것이 중요합니다.

사용 가능한 플랫폼의 하위 집합을 대상으로 하려면 Maven 종속성 제외 기능을 사용하여 다른 플랫폼에서 불필요한 아티팩트를 제외할 수 있습니다.

애플리케이션에 포함할 플랫폼을 선택하는 또 다른 방법은 Maven 명령줄 또는 pom.xml 에서 JavaCPP 시스템 속성을 설정하는 것입니다. 자세한 내용은 JavaCPP 설명서를 참조하세요.

스냅샷 사용

TensorFlow Java 소스 저장소의 최신 TensorFlow Java 개발 스냅샷은 OSS Sonatype Nexus 저장소에서 사용할 수 있습니다. 이러한 아티팩트에 의존하려면 pom.xml 에서 OSS 스냅샷 저장소를 구성해야 합니다.

<repositories>
    <repository>
        <id>tensorflow-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.tensorflow</groupId>
        <artifactId>tensorflow-core-platform</artifactId>
        <version>0.4.0-SNAPSHOT</version>
    </dependency>
</dependencies>

Gradle로 설치

Gradle 애플리케이션에 TensorFlow를 포함하려면 해당 아티팩트 에 대한 종속성을 프로젝트의 build.gradle 파일에 추가하세요. 예를 들어,

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.tensorflow', name: 'tensorflow-core-platform', version: '0.3.3'
}

종속성 수 줄이기

Gradle을 사용하여 TensorFlow Java에서 기본 아티팩트를 제외하는 것은 Maven만큼 쉽지 않습니다. 이 종속성 수를 줄이려면 Gradle JavaCPP 플러그인을 사용하는 것이 좋습니다.

자세한 내용은 Gradle JavaCPP 설명서 를 읽어보세요.

소스에서 설치

소스에서 TensorFlow Java를 빌드하고 맞춤설정하려면 다음 지침을 읽어보세요.

예제 프로그램

이 예에서는 TensorFlow를 사용하여 Apache Maven 프로젝트를 빌드하는 방법을 보여줍니다. 먼저 프로젝트의 pom.xml 파일에 TensorFlow 종속성을 추가합니다.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.myorg</groupId>
    <artifactId>hellotensorflow</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <exec.mainClass>HelloTensorFlow</exec.mainClass>
        <!-- Minimal version for compiling TensorFlow Java is JDK 8 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- Include TensorFlow (pure CPU only) for all supported platforms -->
        <dependency>
            <groupId>org.tensorflow</groupId>
            <artifactId>tensorflow-core-platform</artifactId>
            <version>0.3.3</version>
        </dependency>
    </dependencies>
</project>

소스 파일 src/main/java/HelloTensorFlow.java 만듭니다.

import org.tensorflow.ConcreteFunction;
import org.tensorflow.Signature;
import org.tensorflow.Tensor;
import org.tensorflow.TensorFlow;
import org.tensorflow.op.Ops;
import org.tensorflow.op.core.Placeholder;
import org.tensorflow.op.math.Add;
import org.tensorflow.types.TInt32;

public class HelloTensorFlow {

  public static void main(String[] args) throws Exception {
    System.out.println("Hello TensorFlow " + TensorFlow.version());

    try (ConcreteFunction dbl = ConcreteFunction.create(HelloTensorFlow::dbl);
        TInt32 x = TInt32.scalarOf(10);
        Tensor dblX = dbl.call(x)) {
      System.out.println(x.getInt() + " doubled is " + ((TInt32)dblX).getInt());
    }
  }

  private static Signature dbl(Ops tf) {
    Placeholder<TInt32> x = tf.placeholder(TInt32.class);
    Add<TInt32> dblX = tf.math.add(x, x);
    return Signature.builder().input("x", x).output("dbl", dblX).build();
  }
}

컴파일 및 실행:

mvn -q compile exec:java

이 명령은 TensorFlow 버전과 간단한 계산을 인쇄합니다.

성공! TensorFlow Java가 구성되었습니다.