TensorFlow Lite 작업 라이브러리

TensorFlow Lite 작업 라이브러리에는 앱 개발자가 TFLite로 ML 경험을 만들 수있는 강력하고 사용하기 쉬운 작업 별 라이브러리 집합이 포함되어 있습니다. 이미지 분류, 질문 및 답변 등과 같은 인기있는 머신 러닝 작업에 최적화 된 기본 제공 모델 인터페이스를 제공합니다. 모델 인터페이스는 각 작업에 맞게 특별히 설계되어 최상의 성능과 유용성을 제공합니다. 태스크 라이브러리는 크로스 플랫폼으로 작동하며 Java, C ++ 및 Swift에서 지원됩니다.

태스크 라이브러리에서 기대할 수있는 것

  • 비 ML 전문가가 사용할 수있는 명확하고 잘 정의 된 API
    단 5 줄의 코드 내에서 추론을 수행 할 수 있습니다. Task 라이브러리의 강력하고 사용하기 쉬운 API를 빌딩 블록으로 사용하여 모바일 장치에서 TFLite로 ML을 쉽게 개발할 수 있습니다.

  • 복잡하지만 일반적인 데이터 처리
    공통 비전 및 자연어 처리 논리를 지원하여 데이터와 모델에 필요한 데이터 형식간에 변환합니다. 학습 및 추론을위한 동일하고 공유 가능한 처리 로직을 제공합니다.

  • 고성능 이득
    데이터 처리에는 몇 밀리 초도 걸리지 않으므로 TensorFlow Lite를 사용한 빠른 추론 경험이 보장됩니다.

  • 확장 성 및 사용자 지정
    작업 라이브러리 인프라가 제공하는 모든 이점을 활용하고 자신 만의 Android / iOS 추론 API를 쉽게 구축 할 수 있습니다.

지원되는 작업

다음은 지원되는 작업 유형 목록입니다. 이 목록은 점점 더 많은 사용 사례를 계속 활성화함에 따라 늘어날 것으로 예상됩니다.

대리인과 함께 작업 라이브러리 실행

대리자GPUCoral Edge TPU 와 같은 기기 내 가속기를 활용하여 TensorFlow Lite 모델의 하드웨어 가속을 지원합니다. 신경망 운영에이를 활용하면 대기 시간 및 전력 효율성 측면에서 큰 이점을 얻을 수 있습니다. 예를 들어 GPU는 모바일 장치에서 최대 5 배의 지연 시간을 제공 할 수 있으며 Coral Edge TPU는 데스크톱 CPU보다 10 배 빠른 속도로 추론 할 수 있습니다.

작업 라이브러리는 대리인을 설정하고 사용할 수있는 간편한 구성 및 대체 옵션을 제공합니다. 이제 Task C ++ API에서 다음 액셀러레이터가 지원됩니다.

iOS 용 Core ML 델리게이트 및 Task Java / Swift / Web API의 가속화 지원이 곧 제공 될 예정입니다.

Android에서 GPU 사용 예

1 단계. 다음과 같이 bazel 빌드 대상의 GPU 델리게이트 플러그인에 의존합니다.

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

기타 대리인 옵션은 다음과 같습니다.

"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon

2 단계. 작업 옵션에서 GPU 델리게이트를 구성합니다. 예를 들어 다음과 같이 BertQuestionAnswerer 에서 GPU를 설정할 수 있습니다.

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

여기에서 고급 가속기 설정을 살펴보십시오.

Coral Edge TPU 사용 예

1 단계. 다음과 같이 bazel 빌드 대상의 Coral Edge TPU 델리게이트 플러그인에 의존합니다.

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

2 단계. 작업 옵션에서 Coral Edge TPU를 구성합니다. 예를 들어, 산호 에지 TPU를 설정할 수 있습니다 ImageClassifier 다음과 같다 :

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Step 3. 아래와 같이 libusb-1.0-0-dev 패키지를 설치합니다. 이미 설치되어 있으면 다음 단계로 건너 뜁니다.

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

단계 4. bazel 명령에서 다음 구성으로 컴파일합니다.

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

Coral Edge TPU 장치에서 작업 라이브러리 CLI 데모 도구 를 사용해보십시오. 사전 학습 된 Edge TPU 모델고급 Edge TPU 설정 에 대해 자세히 알아보세요.