티스토리 뷰

다음 링크를 중문에서 국문으로 번역했습니다.

https://yq.aliyun.com/articles/68206




개요: 알리바바 클라우드 HPC와 컨테이너 서비스를 이용하여, 반 고흐 스타일 이미지를 손쉽게 만들기


이 시리즈는 알리바바 클라우드 HPC 및 컨테이너 서비스의 Docket 기술을 이용하여 TensorFlow의 기계학습에 착수하도록 돕는다.

본 기사는 이 시리즈의 제4편이며,  알리바바 클라우드의 서비스를 어떻게 이용하여 반 고흐(Van Gogh)로 순식간에 변환하는 지 설명하며, 일상생활의 그림에서 다른 예술 정취가 나도록 한다.


1890년 7월 29일에 반 고흐는 밀밭에서 겨우 37세였던 자신의 생을 마감하였으며, 세상에 남긴 것은 <별하늘>, <해바라기> 및 <까마귀가 있는 밀밭>이였으며 위대한 작품이었다. 특히 <별하늘>의 불꽃놀이 같이 빛나는 별들을 볼 때,  그림에 대한 고흐의 불꽃 같은 열정을 느끼지 않을 수 없다.



반 고흐는 일찍히 다음과 같이 썼다 : "만약 내가 많은 시간을 들여서 진정한 풍경을 그릴 수 있다면 얼마나 좋을까 하고 늘 생각해.  평소 나는 갖가지의 뛰어난 경치를 보고 '여태까지 그림에서 이렇게 아름다운 풍경을 볼 수 없었어'라고, 무심결에 말하게 돼." 이는 대가와 후세의 공통된 유감이다。


그러나 기술이 발전한 오늘날에 이르러서는 우리들도 반 고흐 스타일에 근접한 예술 작품을 만들어 낼 수 있다. 구체적으로 말하면, 딥러닝으로 반 고흐 스타일을 그의 작품에서 추출해서, 우리들이 가지고 있는 이미지에 부여하면, 반 고흐 스타일로 그려낸 새로운 이미지를 얻을 수 있다. 여기서 neural style의 TensorFlow라고 일컫는 구현을 이용하여 이 작업을 완성하면, 강력한 딥 신경 네트워크 (VGG19) 에 기반하여 이미지 처리를 한다. 아래에 입력 이미지가 있으며, 우리들은 해당 이미지를 별하늘 스타일의 이미지로 변환하고자 한다 :


input.jpg


하지만, 이 알고리듬을 설치하고 실행하기는 간단하지 않으며, 최소한 다음과 같은 것이 필요하다.

  • 딥러닝 자체가 대규모 행렬 계산을 필요로 하나, 우리들은 결과를 기다리는 데 수일, 수주, 심지어 몇 개월이나 소비하고 싶지 않다 ; 그래서 GPU로 프로세스를 가속하는 것이 필수 선택이다.
  • CUDA, Cudnn, Baze, TensorFlow, 해당 의존 neural-style을 설치하고도,  이 도구들 및 라이브러리의 복잡도는 설치하고 나서도 골치덩어리이다;그래서 GPU 애플리케이션의 간략 설치도 필수적이다.
  • 립러닝 실험 환경은 타 계통에 비해서 취약하다고 여겨지고 있으며,  변수, 배치 및 의존 라이브러리의 변경들은 모두  계통의 작업 정지를 초래할 수 있으며,  그러면 환경 재설정을 피할 수가 없다 ; 그러므로 지속적인 재설치 및 재배치도 필수적이다.

HPC 컨테이너 서비스는  Docker 기술을 잘 이용하여 GPU에 애플리케이션의 설치 및 배치를 간략화하며, 동시에 Nvidia GPU 카드로 입도의 배정 및 간격을 증가하여, 위의 3개 요건을 훌륭하게 만족한다. 우리들은 한 개의 간단한 예시로써 HPC의 컨테이너 서비스를 사용하는 방법을 보이며, 원클릭으로 별하늘 스타일의 거리 풍경을 그려낼 수 있다.


HPC 컨테이너 서비스를 이용하여 원클릭으로 neural-style을 실행하여 반 고흐 작품을 모방하기

1. 북경 HPC를 구매 후, 북경HPC사용컨테이너 서비스의 문서에 따라, HPC 기기에 컨테이너 서비스를 설치한다.


2. 해당 설치가 완료 후, 컨테이너 서비스에서 GPU를 지원하는 지 확인하고, 각 알리바바 클라우드 HPC 기기에서 GPU 2개가 있는 지, 그 중 각 GPU의 배치 여부를 볼 수 있다.

HPC-Cluster.png


3. 설치를 간략화하기 위해, 우리들은 사전 빌드된 neural style의 미러를 제공한다.

  • registry-internal.cn-beijing.aliyuncs.com/cheyang/neural-style

아래에 만들어진 것은 해당 미러의 Dockerfile이다.

FROM registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:0.10.0-devel-gpu

RUN cd / \
    && git clone https://github.com/anishathalye/neural-style.git \
    && cd neural-style \
    && wget http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

RUN pip install SciPy Pillow NumPy

WORKDIR /neural-style

CMD ["python","neural_style.py","--content", "/neural/input.jpg","--styles", "/neural-style/examples/1-style.jpg", "--output", "/neural/output.jpg"]


4. HPC 컨테이너 서비스에서 만든 OSS 데이터 볼륨에 따라서, OSS 데이터 볼륨을 만들고, 게다가 OSS 클라이언트 단말기의 이미지로 업로드 한다.


oss-client.png



5. 아래와 같은 docker-compose 탬플릿으로 알리바바 클라우드 HPC 컨테이너 서비스에 설치하며, <별하늘> 스타일(1-style.jpg)로 우리들이 기대하던 이미지를 생성할 수 있다.

version: '2'
labels:
  aliyun.project_type: "batch"
services:
  neural:
    image: registry-internal.cn-beijing.aliyuncs.com/cheyang/neural-style:latest
    command:
       - "python" 
       - "neural_style.py" 
       - "--content" 
       - "/neural/input.jpg" 
       - "--styles" 
       - "/neural-style/examples/1-style.jpg" 
       - "--output" 
       - "/neural/output.jpg"
    labels:
      - aliyun.gpu=1
    volumes:
       - neural:/neural


주 :

  • aliyun.project_type: "batch"는 해당 애플리케이션을 지정하여 사용하는 것은 오프라인 애클리케이션이며, 오프라인 컴퓨팅의 메타언어를 상세히 알고 싶다면, 알리바바 컨테이너 서비스 중 오프라인 작업 실행 문서를 참조한다.
  • aliyun.gpu는 신청한 GPU 개수를 지정한다. 알리바바 클라우드 컨테이너 서비스는 GPU를 컨테이너에 분산하는 것을 담당하며, 호스트의 GPU 카드를 컨테이너 내에 매핑하며, 여기서 동시에 사용자에게 투명하게 한다. 예를 들어 설명하면, 만약 사용자가 1개의 GPU를 신청하면, 호스트의 /dev/nvidia1 만을 사용할 수 있으며, 호스트의 /dev/nvidia1 을 컨테이너의 /dev/nvidia0 에 매핑하면,  사용자 프로그램이 기기 번호와 분리되도록 한다.
  • 볼륨은 OSS로 입력 이미지 및 출력 이미지를 저장하며, 관심이 있으면 컨테이너 서비스 및 OSS 데이터 볼륨을 참조한다.


6. 컨테이너 서비스의 애플리케이션 상태 페이지에 가서 진척도를 살펴볼 수 있으며, 애플리케이션이 완료된 후, 별하늘 스타일의 이미지를 다운로드할 수 있다.


service-status.png


이렇게 별하늘 버전의 거리 풍경을 볼 수 있다.


output.jpg



7. 만일 모니터링 서비스를 설치한다면, 한 곳에서 컴퓨팅 프로세스 중에 GPU의 사용률 , 메모리 사용율 및 온도를 모니터링할 수 있다. 이는 구현한 애플리케이션 중에 무척 가치 있는 데이터이며, 만약 Nvidia GPU의 온도가 어느 정도 높아지면, 컴퓨팅이 정지되는 등 문제를 초래할 수 있다. 기반 인프라 모니터링을 통하여, 기반 인프라를 일목요연하게 이용하도록 돕는다.


hpc-monitoring.png


결론

보았듯이, 컨테이너 서비스로 HPC에서 반 고흐의 Neural Style을  모방한 실행물은 상당히 사의(간단한 선으로 그리는 중국 그림)와 닮았으며, 미러 1개와 Docker Compose 문서 1개, 컨테이너 서비스만 있으면, 다른 것도 해내도록 돕는다. 그밖에도 다른 기계학습 애플리케이션도 시도하여 혁신 속도를 가속하는 희열을 체험할 수 있다.


알리바바 클라우드 HPC와 컨테이너 서비스를 이용하여,  고성능 컴퓨팅을 취득하지 않아도, 간단히 이런 성능을 입수할 수 있고,   기계학습 애플리케이션의 빠른 실험 및 설치를 구현하고, 기계학습 제품화의 속도를 가속한다. 컨테이너 서비스는 GPU 자원의 배정 및 관리를 제공하고, 게다가 오브젝트 저장, 로그, 모니터링 등 기반 인프라 기능을 제공하며, 사용자가 기계학습 사용에 전념하여 사업 가치를 창조하도록 돕는다.