[Project Bonsai] Bonsai를 로컬 환경에서 사용해보기

소개



Project Bonsai에 대해 조사해 보았습니다의 4번째입니다.
과거의 내용은 이쪽.
첫 번째는 "Bonsai를 만져보세요"
두 번째는 "Bonsai를 만나보세요"
세 번째는 "Bonsai를 Bonsai의 시뮬레이터를 만져보세요"

이번에는 학습된 Bonsai를 로컬 환경에서 사용하고 싶습니다.

본사이란 무엇인가?



Microsoft가 제공하는 자율 시스템용 기계 교시 서비스입니다. (현재는 Public Preview)
산업제어시스템에 초점을 맞춘 범용 딥 강화 학습 플랫폼인 것 같습니다.

Bonsai를 사용해보기



학습 결과는 Docker 컨테이너로 패키징 그리고 사용할 수 있습니다.

사용하려면 다음 소프트웨어가 필요합니다.
설치 방법이나 조작 방법은 여기에서는 설명하지 않으므로 개별적으로 조사하십시오.
  • Azure Cli
  • 도커

  • 학습된 Bonsai 출력



    먼저 학습된 정보를 표시하고 Train 페이지에서 Export Brain을 클릭합니다.


    출력할 컨테이너의 형식을 지정합니다.
    ※예를 들면 RaspberryPi3에서 동작시키고 싶은 경우는, arm64(v8)등을 지정합니다.
    사용할 환경의 출력 형식이 결정되면 [Export] 버튼을 클릭합니다.
    완료하는 데 약간의 시간이 걸립니다.


    컨테이너 다운로드 및 실행



    내보내기가 완료되면 왼쪽 메뉴의 Simulators 아래에 Expoeted Brains 항목이 추가됩니다.

    추가된 항목의 오른쪽에 있는 "..."을 선택하고 메뉴에서 "View deployment instructions"를 클릭합니다.

    로그인으로부터, 취득, 기동까지의 커멘드가 표시되므로, 카피해 로컬 환경에서 실행합니다.

    명령은 다음과 같습니다.
    
    # Azure Container Registryにログイン
    az acr login
    
    # イメージのダウンロード
    docker pull \
    WORKSPACE_NAME.azurecr.io/WORKSPACE_ID/BRAIN_NAME:VERSION-OS_TYPE-ARCHITECTURE
    
    # 起動
    docker run              \
      --detach              \
      --publish 5000:5000   \
      --name CONTAINER_NAME \
    WORKSPACE_NAME.azurecr.io/WORKSPACE_ID/BRAIN_NAME:VERSION-OS_TYPE-ARCHITECTURE
    
    WORKSPACE_NAME : Bonsai 작업공간에 지정한 이름.WORKSPACE_ID : Azure가 할당 한 Bonsai의 Wokespace ID.CONTAINER_NAME : 로컬 Docker 컨테이너 이름.

    복사 내용을 실행하면 ACR에 로그인, 다운로드 및 실행이 실행됩니다.


    시작 확인



    시작 명령까지 실행할 수 있으면 Bonsai가 시작되었는지 확인하기 위해 다음 명령을 실행합니다.
    docker logs -f CONTAINER_NAME
    

    Bonsai가 성공적으로 실행되면 Bosanai 로그가 표시됩니다.


    동작 확인



    시작한 로컬 Bonsai에 대해 REST에서 학습 결과를 얻을 수 있습니다.

    다음 URL에 대해 학습 커리큘럼에서 지정한 SimState의 JSON 정보를 POST하면 내용에 대한 SimAction가 반환됩니다.
    http://localhost:5000/v1/prediction
    

    다음에 정보를 보내 보겠습니다.
    {
      "cart_position":0,
      "cart_velocity":0,
      "pole_angle":0,
      "pole_angular_velocity":0
    }
    


    확실히 SimState에 대한 SimAction (command)가 반환되었습니다.

    덧붙여서, pole_angle의 파라미터를 삭제해, 실행했을 경우는, 이하와 같은 에러가 됩니다.


    여담



    API 설명서는 http://localhost:5000/v1/doc/index.html에서 참조할 수 있습니다.


    요약



    이번은 학습 후에 Bonsai를 어떻게 사용해 나갈까? 를 중심으로 조사해 보았습니다.
    쉽게 할 수있는 좋은 느낌입니다.
    다만, 학습시킨 Cartpole를 현실 환경에서 테스트할 수 있는 환경이 없는 것이 유감스러운 곳입니다.

    여기까지 Bonsai에 대해 한가지 건드릴 수 있었으므로, 다음(언제가 될지 모르지만)는, 전부 독자적으로 준비해 보고 싶습니다.

    좋은 웹페이지 즐겨찾기