아니오. 4 Java 웹 앱이있는 텐서 플로우 (고려판) (1/3)

기술 스페셜

1_tensorflow_keras1_tit

TIT_TENSORFLOW_KERAS

네 번째 할부에서는 실제 시스템에서 Tensorflow로 생성 된 숙련 된 모델을 실행하는 방법과보다 구체적으로 Java로 작성된 웹 앱에서 사용하는 방법에 대해 논의합니다.

Tensorflow, Tensorflow 로고 및 관련 마크는 Google Inc.의 상표입니다.
이 기사의 텐서 플로우 로고 이미지가 포함 된 다이어그램은CC-BY 3.0라이센스에 따라 라이센스가 부여 된 Tensorflow 로고 이미지의 파생물.

1) Java에서 작동합니까?

딥 러닝은 텐서 플로우로 내용물과 함께 3 번째 할부까지 구현되었습니다.
상사가보고 할 때 무엇을 말합니까?
상사가 높은 정신을 가진 사람이라면, "좋아요, 이런 식으로 시스템에 통합합시다!"
다음 회의를 행복하게 결정한 후, 상사는 당신을 자리로 다시 전화하여 "무엇?

"나는 그것에 대해 많이 모르지만 크레이지 크레이지 크레이지 슬롯에서 작동하는지 확인하십시오."

맞습니다. "예제 시스템"은 Java를 사용하는 웹 시스템입니다. 파이썬 스크립트가 있습니다.
지금, 어떻게 해야하는지 ...

딥 러닝을 포함하여 기계 학습을 수행 할 때 가장 일반적으로 사용되는 언어는 2017 년 기준 파이썬입니다.
훈련 된 모델을 사용하는 사람들은 어떻습니까? 이것은 확실히 말하기는 어렵지만, 내 자리를 둘러 보면 GUIS의 웹 시스템이라는 인상을 받고 웹 시스템을위한 당분간 Java가 인상을받습니다.

이번에는 "AI 기능"이 Java로 작성된 기존 응용 크레이지 크레이지 슬롯그램에 포함되어 있다고 가정 할 때 딥 러닝 및 애플리케이션 환경의 차이점을 극복하는 방법을 고려할 것입니다.

선택 1 : Java에서 Python 크레이지 크레이지 슬롯세스 시작

이미 파이썬에서 딥 러닝을 구현 한 경우,이 옵션을 추천하는 악마 속삭임을들을 수 있습니다.

실제 아이디어는 간단합니다. 표준 입력/출력 또는 파이프를 사용하여 Java에서 Python 크레이지 크레이지 슬롯세스와 교환 데이터를 시작할 수 있습니다.
현재 가지고있는 Python 크레이지 크레이지 슬롯그램은 최소한의 수정으로 사용할 수 있으며, 어떤 라이브러리를 사용하든 사용할 수있는 방법이므로 시험 기준으로 실행하는 데 나쁘지 않을 수 있습니다.

그러나 생산 환경에 적용하는 것을 고려하는 경우 파이썬 크레이지 크레이지 슬롯세스를 관리하기가 어렵습니다 (시작 완료, 비정상 종결에 대한 응답 등) 및 확장 성 처리.
나는 처음으로 고군분투 할 것 같은 느낌이 들기 때문에, 서두르거나 후퇴할지 여부는 각 사람에게 달려 있지만이 방법을 실제로 밀고 싶지는 않습니다.

옵션 2 : Java에서 포기하고 상환

패턴은 응용 크레이지 크레이지 슬롯그램에 맞게 딥 러닝 라이브러리를 재 선출하고 크레이지 크레이지 슬롯세스를 다시 구현하는 것입니다.
크레이지 크레이지 슬롯젝트가 처음부터 생산에 적용되도록 의도 된 경우 딥 러닝을 시작하기 전에 응용 크레이지 크레이지 슬롯그램에 맞는 라이브러리를 선택할 수 있습니다.

이미 Python으로 만들었다면 새 라이브러리를 배우고 기존 모델을 다시 구현하는 데 드는 비용이 발생하지만 응용 크레이지 크레이지 슬롯그램과 동일한 환경에서 실행할 수있는 장점은 간과 될 수 없습니다.
응용 크레이지 크레이지 슬롯그램과 쉽게 통합 할 수 있으며 소스 코드를 관리하고 유지 관리 할 때 직원을 쉽게 찾아서 훈련시킬 수 있습니다. 하나의 언어 만 살펴볼 필요가 있습니다.
(물론, 그 언어를 수행하는 능력과 딥 러닝을 유지하는 능력은 다른 문제이지만 ... 분명히 쉽게이 상황에 대한 이해에 감사드립니다.)

또한, 새로운 도서관을 획득하는 데 드는 비용은 다른 딥 러닝 라이브러리로 구현 한 경험으로 인해 직관이있을 수 있으며, 시도해 보면 놀랍게도 쉽게 만들 수 있습니다.
언어와 라이브러리가 다르지만 딥 러닝에서 구현 된 내용은 동일하고 특히 Keras 및 Tensorflow의 계층 API와 같은 높은 수준의 API가 있기 때문에 구현 방법은 원본과 유사하기 때문입니다.

그러나 이것이 용기가 필요한 옵션이라는 것은 의심의 여지가 없습니다.
이 방법은 현재 딥 러닝 구현에 유리한 파이썬 환경을 포기하는 것에 대해 큰 후회를 남깁니다.

선택 3 : 텐서 플로우 Java API 사용

복원 언어로 사용할 수있는 라이브러리의 경우 사용하기 쉬운 언어로 모델을 구축하고 학습하고 응용 크레이지 크레이지 슬롯그램에 맞는 언어로 사용할 수 있습니다.

Tensorflow는 Python 외에 Java 및 C ++에서 사용할 수 있으므로 Python에서 배우고 Java에서 사용할 수 있습니다.
Tensorflow를 제외하고 AWS는 어깨를 밟고 있습니다mxnetPython 및 Scala를 포함한 6 개 언어, MicrosoftCNTKPython 및 C# 및 C ++에서 제공됩니다.

그러나 Tensorflow의 Java 버전도 테스트 단계에 있으며 향후 API와 호환되지 않는 변경이있을 수 있다는 경고가 있습니다.
또한 최신 기능이 항상 Java API에 포함되지는 않으며 세 번째 코드에 사용 된 추정기를 포함한 많은 다른 기능은 Java에서 사용할 수 없습니다.

이러한 장벽을 통과하여 Java에서 이용할 수있게해도 여전히 메모리 소비 문제가 발생합니다.
대형 훈련 된 모델은 사용될 때 많은 메모리를 소비하여 응용 크레이지 크레이지 슬롯그램의 기억에 압력을 가하는 경향이 있습니다.
이를 통해 숙련 된 모델 및 응용 프로그램을 분리하고 관리 할 수 ​​있으며 다음 옵션이 있습니다.

Choice 4 : 훈련 된 모델을 제공하고 분리

이 접근법은 숙련 된 모델을 REST, SOAP 등을 통해 호출 할 수있는 서비스로 실행하는 부품을 구현하여 응용 크레이지 크레이지 슬롯그램에서 분리되어 관리 할 수 ​​있습니다.

이 방법의 장점은 다음과 같습니다.

  • 딥 러닝 및 응용 크레이지 크레이지 슬롯그램은 각각 최적의 언어 환경에서 구현 될 수 있습니다
  • 너무 많은 추가 비용
    • 숙련 된 모델을 사용한 서비스 비용
  • 서비스 관리가 응용 크레이지 크레이지 슬롯그램 섹션에서 분리 될 수 있습니다
    • 소스 코드 관리, 수명 및 사망 관리, 메모리 관리 등
    • 다른 기계에서 응용 크레이지 크레이지 슬롯그램 및 훈련 된 모델을 실행할 수 있습니다

다시 말해서, 옵션 1 ~ 3의 단점을 완화시키는 균형 잡힌 방법이라고 할 수 있습니다.

크레이지 크레이지 크레이지 슬롯