IBM 연구를 기반으로 매일 2.5 Quintillion 바이트의 데이터가 생성됩니다. 이 데이터의 많은 부분은 대형 텍스트, 오디오 녹음 및 이미지와 같은 구조화되지 않은 데이터입니다. 데이터에 유용한 작업을 수행하려면 먼저이를 구조화 된 데이터로 변환해야합니다.
이 코드 패턴에서는 개발자가 오픈 소스 딥 러닝 모델을 찾고 실험 할 수있는 교환 인 Max (Model Asset Exchange)의 모델 중 하나를 사용합니다. 특히 이미지 캡션 생성기를 사용하여 이미지를 캡션하고 이미지 기반 이미지 컨텐츠를 통해 필터링 할 수있는 웹 응용 프로그램을 작성합니다. 웹 애플리케이션은 토네이도를 사용하는 가벼운 파이썬 서버가 뒷받침하는 대화식 사용자 인터페이스를 제공합니다. 서버는 UI를 통해 이미지를 가져 와서 모델의 REST 엔드 포인트로 보내고 UI에 생성 된 캡션을 표시합니다. 모델의 REST 엔드 포인트는 Max에 제공된 Docker 이미지를 사용하여 설정됩니다. Web UI는 각 이미지의 생성 된 캡션과 대화 형 워드 클라우드를 표시하여 캡션을 기반으로 이미지를 필터링합니다.
독자 가이 코드 패턴을 완료하면 다음 방법을 이해할 것입니다.

다음은 Spark+AI Summit 2018에서 웹 앱의 짧은 데모가 포함 된 Max에 대한 이야기입니다.
코드 패턴을 실행하는 방법 :
Model Doc을 배포하여 IBM Cloud에 Image Caption Generator 모델을 배포하십시오. 이미 사용 가능한 모델 API 엔드 포인트가있는 경우이 프로세스를 건너 뛸 수 있습니다.
참고 : 모델을 배포하는 데 시간이 걸릴 수 있습니다. 더 빨리 진행하려면 로컬에서 실행을 시도 할 수 있습니다.
Deploy to IBM Cloud 누릅니다. 아직 IBM 클라우드 계정이없는 경우 하나를 만들어야합니다.
Delivery Pipeline 클릭하고 양식의 Create + 버튼을 클릭하여 웹 앱의 IBM Cloud API Key 생성합니다.

API 키가 생성되면 Region , Organization 및 Space 양식 섹션이 채워집니다. Image Caption Generator Model API Endpoint 섹션을 위에 배치 한 후에 배치 한 다음 Create 클릭하십시오.
이 항목의 형식은
http://170.0.0.1:50005000이어야합니다

도구 체인에서는 앱을 배포하는 동안 Delivery Pipeline 클릭하여 시청할 수 있습니다. 일단 배포되면 View app 클릭하여 앱을 볼 수 있습니다.

Quay의 최신 Docker 이미지를 사용하여 Kubernetes의 모델 및 웹 앱을 배포 할 수도 있습니다.
Kubernetes 클러스터에서 다음 명령을 실행하십시오.
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator/master/max-image-caption-generator.yaml
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator-Web-App/master/max-image-caption-generator-web-app.yaml 웹 앱은 클러스터의 포트 8088 에서 사용할 수 있습니다. 이 모델은 내부적으로 만 사용할 수 있지만 NodePort 통해 외부에 액세스 할 수 있습니다.
참고 : IBM Cloud에서 웹 앱을 배포하려면 IBM Cloud Kubernetes 서비스로 배포하지 않고 위의 IBM 클라우드 명령어에 배포하는 것이 좋습니다.
참고 :이 단계는
Deploy to IBM Cloud버튼을 사용하는 대신 로컬로 실행할 때만 필요합니다.
참고 :이 섹션의 지침 세트는 이미지 캡션 생성기 프로젝트 페이지에있는 수정 된 버전입니다.
API를 제공하는 모델을 자동으로 시작하는 Docker 이미지를 실행하려면 실행합니다.
docker run -it -p 5000:5000 quay.io/codait/max-image-caption-generator
이렇게하면 Quay에서 사전 제작 된 이미지를 가져 오거나 (이미 로컬로 캐시 된 경우 기존 이미지를 사용) 실행합니다. 오히려 모델을 로컬로 빌드하고 싶다면 Model ReadMe의 단계를 따라갈 수 있습니다.
현재이 Docker 이미지는 CPU 전용입니다 (나중에 GPU 이미지에 대한 지원을 추가 할 것 입니다).
API 서버는 대화식 Swagger 문서 페이지를 자동으로 생성합니다. http://localhost:5000 으로 이동하여로드하십시오. 거기에서 API를 탐색하고 테스트 요청을 만들 수도 있습니다.
model/predict 엔드 포인트를 사용하여 테스트 파일을로드하고 API에서 이미지의 캡션을 가져옵니다.
모델 샘플 폴더에는 API를 테스트하는 데 사용할 수있는 몇 가지 이미지가 포함되어 있거나 직접 사용할 수 있습니다.
예를 들어 명령 줄에서 테스트 할 수도 있습니다.
curl -F " image=@path/to/image.jpg " -X POST http://localhost:5000/model/predict{
"status" : " ok " ,
"predictions" : [
{
"index" : " 0 " ,
"caption" : " a man riding a wave on top of a surfboard . " ,
"probability" : 0.038827644239537
},
{
"index" : " 1 " ,
"caption" : " a person riding a surf board on a wave " ,
"probability" : 0.017933410519265
},
{
"index" : " 2 " ,
"caption" : " a man riding a wave on a surfboard in the ocean . " ,
"probability" : 0.0056628732021868
}
]
}다음 명령을 실행하여 이미지 캡션 생성기 웹 앱 저장소를 클론하십시오.
git clone https://github.com/IBM/MAX-Image-Caption-Generator-Web-App
참고 :
cd ..Max-Image-Caption-Generator Directory에서 먼저 CD가 필요할 수 있습니다.
그런 다음 디렉토리를 로컬 저장소로 변경하십시오
cd MAX-Image-Caption-Generator-Web-App
이 웹 앱을 실행하기 전에 종속성을 설치해야합니다.
pip install -r requirements.txt
그런 다음 실행하여 웹 앱을 시작합니다.
python app.py
기본 이미지 처리가 완료되면 (<1 분) 웹 앱에 액세스 할 수 있습니다. http://localhost:8088
이미지 캡션 생성기 엔드 포인트는 웹 앱이 성공적으로 시작하려면 http://localhost:5000 에서 사용할 수 있어야합니다.
다른 포트를 사용하려고하거나 다른 위치에서 ML 엔드 포인트를 실행하려면 명령 줄 옵션으로 변경할 수 있습니다.
python app.py --port=[new port] --ml-endpoint=[endpoint url including protocol and port]
Docker와 함께 웹 앱을 실행하려면 웹 서버를 실행하는 컨테이너와 나머지 엔드 포인트는 동일한 네트워크 스택을 공유해야합니다. 다음 단계에서 수행됩니다.
이미지 캡션 생성기 REST 엔드 포인트를 실행하는 명령을 수정하여 컨테이너의 추가 포트를 호스트 시스템의 포트에 매핑합니다. 아래의 예에서는 호스트의 포트 8088 에 매핑되지만 다른 포트도 사용할 수 있습니다.
docker run -it -p 5000:5000 -p 8088:8088 --name max-image-caption-generator quay.io/codait/max-image-caption-generator
실행하여 웹 앱 이미지를 빌드하십시오.
docker build -t max-image-caption-generator-web-app .
다음을 사용하여 웹 앱 컨테이너를 실행하십시오.
docker run --net='container:max-image-caption-generator' -it max-image-caption-generator-web-app
실행하여 Quay.io에서 사용할 수있는 최신 Docker 이미지를 사용하여 웹 앱을 배포 할 수도 있습니다.
docker run --net='container:max-image-caption-generator' -it quay.io/codait/max-image-caption-generator-web-app
이렇게하면 모델 Docker 컨테이너가 위로 실행되는 모델을 사용하며 웹 앱 레포를 로컬로 복제하지 않고 실행할 수 있습니다.

장기 실행중인 웹 앱에는 많은 양의 사용자 업로드 이미지가 있습니다.
http://localhost:8088에서 웹 앱을 실행할 때http://localhost:8088/cleanup에서 관리 페이지를 사용할 수있어 사용자가 서버에서 모든 사용자 업로드 된 파일을 삭제할 수 있습니다.[참고 : 모든 사용자 업로드 된 이미지를 삭제합니다]

이 코드 패턴은 Apache Software 라이센스, 버전 2에 따라 라이센스가 부여됩니다.이 코드 패턴 내에서 호출 된 별도의 타사 코드 개체는 별도의 라이센스에 따라 해당 제공자가 라이센스를 부여합니다. 기부금에는 개발자 인증서, 버전 1.1 (DCO) 및 Apache Software 라이센스 버전 2가 적용됩니다.
아파치 소프트웨어 라이센스 (ASL) FAQ