Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[KNU Lecture] Backend.AI 소개 및 설치 튜토리얼

Ed7b6f41ac2581f1be3fd9b5bc883875?s=47 Joongi Kim
September 23, 2019

[KNU Lecture] Backend.AI 소개 및 설치 튜토리얼

- Backend.AI의 "제품으로서의" 소개
- Backend.AI 개발 역사
- 직접 싱글 인스턴스 (개발) 모드로 설치해보기
- Backend.AI 코드 구조 톺아보기
- Backend.AI와 다른 오픈소스 프로젝트 기여 요령

Ed7b6f41ac2581f1be3fd9b5bc883875?s=128

Joongi Kim

September 23, 2019
Tweet

Transcript

  1. Backend.AI: 컨테이너 기반 GPU 관리 플랫폼 경북대학교 오픈소스 특강 김준기

    CTO Lablup Inc. 2019년 9월 23일 1 / 46
  2. Backend.AI "제품" 소개 0차시 2 / 46

  3. 딥러닝과 GPU의 시너지 Deep Learning = 수십억 개 이상의 매개변수를

    갖는 행렬 계산의 반복 2015 Microsoft ResNet 2015 13,000 2016 Baidu Deep Speech 2 2016 20,000 Google NMT 50억 달러 2017 6000만 파라미터 700경 계산량 3억 파라미터 2000경 계산량 계산량 산정: GOPS * bandwidth Reference: NVIDIA 2017 “A NET COMPUTING ERA” 87억 파라미터 1.05해 계산량 1 2 3 4 5 6 7 8 9 10 11 12 58 1 + 7 + 2 + 9 + 3 + 11 = 58 3 / 46
  4. 딥러닝과 GPU의 시너지 DRAM Cache Control ALU ALU ALU ALU

    CPU GPU DRAM DRAM GPU = 동일 칩 면적 당 더 많은 연산회로(ALU) § 2007년 NVIDIA CUDA, 2009년 OpenCL 기술의 등장으로 일반 C/C++ 개발환경을 그대로 쓰면서 GPU에서 돌아가는 코드를 쉽게 작성할 수 있게 됨 § 이후 수치 연산, 머신러닝, 딥러닝 등에서 활용도가 크게 증가함 CPU 싱글 쓰레드 퍼포먼스 1000배 (2025년까지) 연간 1.5X 연간 1.1X GPU 컴퓨팅 성능 연간 1.5X 102 103 104 105 106 107 1980 1990 2000 2010 2020 4 / 46
  5. GPU 클라우드 HPC & AI = GPU를 더 많이 도입할수록

    더 절약되는 분야 Cloud = 고집적 고밀도 연산자원 활용을 통한 비용 절감 Note(s): CPU Baselined to 5000 Servers for each workload | Capex Costs: CPU node with 2x Skylake CPU’s ~$9K; GPU node with 4x V100 GPU’s ~$45K | Opex Costs: Power & cooling is $180/kW/month | Power: CPU serv er + n/w = 0.6 KW; GPU server + n/w = 1.6 KW; DGX-1V/HGX-1 Server = 3.2KW | HPC: GPU node with 4xV100 compared to 2xCPU Server | DL Training: DGX-1V compared to a 2xCPU server | DL Inference: HGX-1 based s erver (8xV100) Compared to 2x CPU Server |numbers rounded to nearest $0.5M Workload Baseline (CPU-Only) HPC (Amber,LAMPS) AI Training (TensorFlow) AI Inference (Image, Speech) Speed Up 1x 20x >100x 60x Servers 5,000 250 <50 84 Capex $45M $11M $7.5M $7M 3 Year Opex (Power+Cooling) $19.5M $2.5M $1M $1.5M TCO Saving N/A 79% 86% 86% GPU 클라우드 5 / 46
  6. GPU 도입과 효율적 활용이 어려운 이유 (1/2) § '보조 장치'로서

    운영체제에 의한 가상화 불가 § I/O 지연에 의해 노는 시간 발생 Extract Step 1 Convert 1 Extract Step 3 Convert 2 Load 1 Training 1 Load 2 Extract Step 2 Training 2 GPU Idle time CPU Idle time Time Process Thread Page CPU / RAM / Disk File ? GPU OS의 기본 연산자원 가상화 blackbox ioctl() 6 / 46
  7. GPU 도입과 효율적 활용이 어려운 이유 (2/2) 빠른 릴리즈 주기

    (예: TensorFlow 6주) 모델·프레임워크 버전 관리 SW 호환성 이슈 CUDA 9.x CUDA 10.x Python 2.x Python 3.x … Baremetal OS Container layer Containers Containers OS Container layer VM VM OS Containers Baremetal Container layer HPC 환경에서 컨테이너 기술은 아직 초기 단계 - 필요한 것들 : • 보다 적은 성능 오버헤드 (namespace의 선별적 적용) • Infiniband, RDMA 등 고속 네트워킹 기술 적용 • MPI 스택을 위한 다중 컨테이너 분산처리 • Batch job scheduler 적용 • GPU 같은 연산 가속기 최적화 7 / 46
  8. Backend.AI https://www.backend.ai 기계학습 모델을 훈련하고 실행하는 모든 과정을 클라우드 또는

    자신의 서버에서 엄청나게 쉽고 빠르게 돌려주는 세련된 플랫폼 8 / 46
  9. Backend.AI https://www.backend.ai 기계학습 모델을 훈련하고 실행하는 모든 과정을 클라우드 또는

    자신의 서버에서 엄청나게 쉽고 빠르게 돌려주는 세련된 플랫폼 9 / 46
  10. Backend.AI 개발 동기 GPU GPU GPU GPU GPU GPU ???

    Backend.AI GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU § 관리자가 사용자별로 GPU 할당 § 놀거나 부족한 자원 발생 § SW 유지관리 어려움 § Backend.AI가 GPU 통합 관리 § 동적으로 그때그때 필요한 만큼만 사용 § 컨테이너 기반으로 표준화된 SW 생태계 10 / 46
  11. Backend.AI 사용 시나리오 Backend.AI GPU GPU GPU GPU GPU GPU

    GPU GPU GPU GPU GPU GPU Backend.AI GPU GPU GPU GPU GPU GPU GPU GPU GPU 클러스터 구축 고성능 GPU 공유 Backend.AI GPU GPU GPU GPU GPU GPU 데이터센터를 클라우드로 동적 스케일링 Cloud 11 / 46
  12. Backend.AI 기반의 GPU 컴퓨팅 스택 새로운 ML 앱 개발에 필요한

    시간과 비용 감소 IaaS / OS 하드웨어 인프라 Brand Guidelines TensorFlow is an end-to-end open-source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries and community resources that lets researchers push the state-of-the-art in ML and developers easily build 완전관리형 GPU 앱 데이터 과학자 데이터 분석가 교육 강사와 학생들 응용소프트웨어 개발자 유연하고 효율적인 GPU 활용 컨테이너 수준 GPU 가상화 원클릭으로 실행하는 GPU 개발환경 관제·감시를 위한 웹 기반 GUI Backend.AI Platform 기존 사용자 환경을 그대로 이용 12 / 46
  13. Backend.AI 플랫폼 구성 클라우드 Fits with your needs instantly 오픈소스

    Get the most out of your hardware 엔터프라이즈 End-to-end ML Infra Manager On-demand GPU envs for HPC and ML/DL with pay-as-you-go pricing Hackable, customizable computing framework with cutting-edge technologies Private GPU cloud & cluster managing solution for large-scale enterprises Backend.AI 13 / 46
  14. Backend.AI 차별점 § 머신러닝 컨테이너 관련 기술들을 단일 프레임웍으로 제공하는

    유일한 솔루션 • 개별 기능(예: scheduling)이나 다른 목적(예: microservice 호스팅)에 최적화된 오케스트레이션 계층은 이미 시장에 다수 존재함 • 실제 머신러닝 연구자·개발자들이 겪는 고충을 묶어서 해결하는 제품은 부족함 § Backend.AI • GPU 최적화 기술 보유 ­ NVIDIA 파트너십을 바탕으로 CUDA 최적 솔루션 구현 ­ 업계 유일 컨테이너 기반 다중/부분 GPU 공유(fractional scaling) 지원 • 동적 샌드박싱: 프로그래밍 및 재작성 가능한 syscall 필터 ­ apparmor/seccomp 등 대비 풍부한 프로그래밍 가능한 정책 지원 • Docker 기반의 레거시 앱 리소스 제한 ­ OpenBLAS와 같은 수치연산 라이브러리가 인식하는 CPU 코어 수 보정 14 / 46
  15. Demo Backend.AI 15 / 46

  16. 구축 사례 Backend.AI 16 / 46

  17. Backend.AI 구축 사례: 국민대 빅데이터MBA § 경영대학에서 금융권 실무자 MBA

    수강생 및 연구자들을 위한 GPU 서버팜 구축 • 3대 서버 24개의 GPU로 80명 이상의 수강생들이 동시에 실습하는 한편, 다수 연구자들은 모델링 수행 § 기술 사양 • 수강생·연구자로 구분된 resource policy 적용 • 노드별 대용량 HDD를 LAN으로 묶어 18 TiB ceph 분산 스토리지 구축 및 가상화 • 학내 사용 가능한 Web GUI로 주요 기능을 제공하여 전담 관리자 없이도 최적 운영 1 Gbps LAN 24 NVIDIA GPUs 노드별 듀얼 제온 CPU 18 TiB 분산파일시스템 (cephfs) Manager + Agent Agent Agent ML classes with 40+ students 10+ graduates and researchers 17 / 46
  18. § 계열사별 분리된 GPU Cloud 서비스를 위한 오케스트레이션 계층 제공

    Domain A Domain B Backend.AI 구축 사례: 금융그룹 Private GPU Cloud 협업 내역 • 망분리 환경을 위한 설치·실행 지원 • 관계사 별 통합 관제 • 관계사 단위 데이터 보안 / 시스템 격리 • 사용자 계정 연동 및 과금 체계 적용 • 그룹 내 사용 환경 최적화 (Windows용 client app 제공) 그룹 통합 클라우드 그룹 통합 데이터센터 계열사별 독립 스토리지 슈퍼어드민 콘솔 18 / 46
  19. Backend.AI 구축 사례: Lablup GPU Cloud § 래블업에서 일반 사용자를

    대상으로 직접 운영하는 Backend.AI 서비스 (B2C) • https://beta.cloud.backend.ai (베타테스트 중) • 가입만으로 바로 Backend.AI를 실행해볼 수 있음 • 현재 제한적 무료 베타 서비스로, 유료화 및 고사양 워크로드 지원 예정 (2019Q3) § 기술 사양 • AWS + Azure + GCP 통합 • Google TPU 지원 (beta) • 데이터 저장을 위해 Azure FileShare + AWS EFS (Elastic File System) 연동 DGX-2 Custom-built GPU nodes ap-northeast-2 평촌 IDC korea-south FileShare asia-east1 EFS RDS TPUs Users Internet Manager + Agents Agents Agents 19 / 46
  20. Backend.AI 기술 로드맵 기술 사양 nvidia- docker Docker Swarm OpenStack

    Kubernetes Apache Mesos Backend.AI (현재) Backend.AI (목표) GPU 지원 컨테이너별 GPU 할당 이기종 가속기 지원 (AMD, Google TPU 등) GPU 부분공유 (fractional scaling) 보안 Hypervisor 및 컨테이너에 의한 가상화 프로그래밍 가능한 샌드박싱 가상화 VM (Hypervisor) Docker 컨테이너 스케줄링 슬롯 기반 고급 (DRF 등) 통합 최신 AI 프레임워크의 파이프라인 통합 ** 설치된 클라우드 벤더나 VM 환경에서 간접 지원 *** 슬롯 기반이긴 하지만 label을 활용한 다양한 사용자화 지원 *** ** ** ** ** 20 / 46
  21. Backend.AI 개발 역사 1차시 21 / 46

  22. 연구말싸미 듕귁에 달아 코드로 서르 사맛띠 아니할쌔 이런 젼차로 어린

    학도가 니르고져 홀빼이셔도 마참내 제 뜨들 시러펴디 못할 노미 하니라. 내 이랄 위하야 어엿비 너겨 새로 연구 코드 나누미와 과학 공학 노리터를 맹가노니 사람마다 희여 수비니겨 날로 쑤메 뼌한킈 하고져 할따라미니라. 22 / 46
  23. 1~2년차: Project "Sorna" § 대표님이 쥬라기 공원 덕후 • 지금도

    서버 이름은 모두 공룡 이름을 따서 짓고 있음 • CodeOnWeb은 프론트엔드니까 관광객들이 공룡을 구경하는 Isla Nublar • 뒤에 붙는 코드실행엔진은 백엔드니까 공룡 공장인 Isla Sorna § 나중에 알게 된 것... • 구글에 넣으면 제일 처음에 나오는 것 • 고심 끝에 프로젝트를 해체...가 아니고 Backend.AI로 이름을 바꿈! 23 / 46
  24. 초기 기술 스택 § 창업자 세 명이 모두 써본 언어

    : Python • 이제 asyncio라는 게 나왔다던데? § AWS는 주변에 삽질해본 사람이 많으니까... § Jupyter Hub를 직접 쓰려니... • 다중 사용자 간 독립성 보장이 안 됨 (실제 문서에 semi-trusted small group 권장) § 소프트웨어 배포와 호환성 문제 : Docker § 뚝딱뚝딱 조합하면 잘 되겠죠? • 천릿길도 한 걸음부터! • (근데 진짜 천릿길이었다...) 24 / 46
  25. 응답하라 2015! § TensorFlow는 2015년 12월에 오픈소스로 공개되었음 • 초기

    버전은 1개의 GPU만 쓸 수 있고, 구글 내부 인프라에 대한 의존성을 주석처리·코드삭제 후 겨우 돌아만 가게 만든 것이었음 • 하지만 역시 사용자 수가 깡패더라... § Kubernetes는 2015년 4월에 "Borg"라는 이름으로 논문 발표 후 11월에 오픈소스 공개 • 바로 그 학회(ACM EuroSys)에 발표자 본인도 논문 발표하고 박사 졸업 § 그리고 그때는 인공지능이 뜨기 전... • 해외에서는 ImageNet의 성공으로 이미 기반을 닦아가던 상황 • 우리나라는 "딥러닝? 그거 뭐임?" 상태 § Project "Sorna" • 일반적인 과학·공학 연구 지원 플랫폼으로 시작하였는데... 25 / 46
  26. 26 / 46

  27. 2~3년차 : Project "Backend.AI" § 2016년 12월 오픈소스 공개 •

    삼성오픈소스컨퍼런스(SOSCON) § 2017년 6월 이름 변경 • Google Startup Advisor Summit을 통해 브랜딩 전문가들의 도움을 받아 브레인스토밍 및 이름 정정 § 2017년 10월 v1.0 릴리즈 • 물론 첫 버전은 언제나 그렇듯 버그 수정하느라... § 2018년 1월 v1.1: long-polling code execution model 완성 § 2018년 1월 v1.2: manager의 가용량 기반 스케줄러 완성 § 2018년 3월 v1.3: 모듈 아키텍처 및 플러그인 아키텍처 도입 § 2018년 9월 v1.4: vfolder 대용량 업·다운로드 지원, CORS 지원, 최초의 GPU 공유 지원 • 이 당시 GPU 공유는 TensorFlow를 수동 패치해서 구현 • cloud.backend.ai / api.backend.ai BETA 서비스로 2019년 9월까지 유지됨 27 / 46
  28. 4년차 이후 § v18.12: 컨테이너 서비스 접속 기능 추가 •

    Jupyter의 플러그인으로 Backend.AI 서비스를 붙이는 것이 아니라, Backend.AI 서비스 안에서 Jupyter를 실행하고 여기에 접속할 수 있게 함 § v19.03: GUI → 독립 제품으로는 처음 팔린 버전! • 첫번째 공식 Web GUI 지원 • 관리자 권한 강화 (타 사용자의 리소스 제어) • 프레임워크 패치 필요 없는 GPU 가상화(fractional scaling) 기술 첫 도입 § v19.09: 대격변 • 도메인/사용자그룹 지원 및 다층적 관리자 권한 설정 지원 • High Availability 설치 지원 • Job Scheduler 도입 § v19.12+? • Kubernetes 환경 지원 • AMD GPU 지원 28 / 46
  29. Backend.AI 개발환경 구축하기 2차시 29 / 46

  30. 준비물 § Linux PC / macOS Computer • Linux: 시스템

    패키지 설치 가능한 sudo 권한 필요 § Docker v18.09+ • Linux: docker-ce 본체를 패키지로 설치 후 docker-compose 확장프로그램 별도 설치 ­ https://docs.docker.com/install/linux/docker-ce/ubuntu/ ­ https://docs.docker.com/compose/install/ • macOS: Docker for Mac 설치하면 한방에 설치됨 ­ https://hub.docker.com/editions/community/docker-ce-desktop-mac § Python 3.6.x • 안타깝게도 Python 3.7은 일부 패키지 호환 문제로 사용 불가 • 원활한 추가 패키지 설치를 위해 C 컴파일러와 개발도구(make 등)가 설치되어 있어야 함 • 공식 인스톨러가 pyenv 활용하여 자동 설치해줌 (별도로 설치할 필요 없음!) § Git 2.10+ § tmux 2.6+ 30 / 46
  31. 확인 사항 (1/2) $ docker-compose version docker-compose version 1.24.1, build

    4667896b ... $ docker version Client: Docker Engine - Community Version: 19.03.2 API version: 1.40 ... Server: Docker Engine - Community Engine: Version: 19.03.2 API version: 1.40 (minimum version 1.12) ... $ git version git version 2.21.0 (버전이 정확히 같을 필요는 없으나 Python 3.6.x, Docker 18.09.x 이후, Git 2.10 이후이면 됨) 31 / 46
  32. 확인 사항 (2/2) (Linux) $ sudo whoami root (macOS) $

    brew Example usage: brew search [TEXT|/REGEX/] brew info [FORMULA...] brew install FORMULA... ... 32 / 46
  33. 설치하기 $ git clone https://github.com/lablup/backend.ai meta (Linux) $ sudo meta/scripts/install-dev.sh

    (macOS) $ meta/scripts/install-dev.sh 개발환경에 필요한 각종 의존성 패키지들을 확인 및 자동 업데이트를 진행 ./backend.ai-dev 디렉토리 아래에 manager, agent, common, client-py 등의 디렉토리가 자동으로 생성되어 소스코드가 복제됨 이후 디렉토리별로 pip install 및 DB 초기화가 진행됨 33 / 46
  34. 설치 완료 확인 ... [INFO] Installation finished. [NOTE] Default API

    keypair configuration for test / develop: > export BACKEND_ENDPOINT=http://127.0.0.1:8081/ > export BACKEND_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE > export BACKEND_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ... [NOTE] How to run Backend.AI manager: ... [NOTE] How to run Backend.AI agent: ... Development environment is now ready. $ docker ps --format 'table{{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}' CONTAINER ID IMAGE NAMES STATUS a7afcbd991cf redis:5.0.5-alpine btpbz7e0_backendai-half-redis_1 Up About a minute f2de28406829 quay.io/coreos/etcd:v3.4.1 btpbz7e0_backendai-half-etcd_1 Up About a minute cdd29e3006a6 postgres:9.6.15-alpine btpbz7e0_backendai-half-db_1 Up About a minute 34 / 46
  35. 테스트 코드 실행 [Shell 1] $ cd ./backend.ai-dev/manager (venv-btpbz7e0-manager) $

    python –m ai.backend.gateway.server –debug ... [Shell 2] $ cd ./backend.ai-dev/agent (venv-btpbz7e0-agent) $ python –m ai.backend.agent.server –debug ... [Shell 3] $ cd ./backend.ai-dev/agent (venv-btpbz7e0-client) $ cat > env-local-user.sh export BACKEND_ENDPOINT=http://127.0.0.1:8081 export BACKEND_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE export BACKEND_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY (venv-btpbz7e0-client) $ source env-local-user.sh (venv-btpbz7e0-client) $ backend.ai config ... (venv-btpbz7e0-client) $ backend.ai run –c "print('hello world')" python 35 / 46
  36. 설치 도중 문제 발생하여 취소 또는 삭제하기 $ sudo meta/scripts/delete-dev.sh

    -e xxxxxx xxxxxx 부분에 docker 컨테이너 이름, virtualenv 이름 등에서 가져올 수 있는 무 작위 생성된 고유식별자(environment ID)를 넣을 것. docker-compose를 이용해 띄워진 컨테이너와 가상네트워크 삭제. pyenv로 생성된 virtualenv 환경 삭제. backend.ai-dev 디렉토리 하위의 모든 파일·디렉토리 삭제. (일부 오류가 발생하더라도 무시하고 최대한 삭제를 진행함) 36 / 46
  37. 흔히 겪는 문제 § 포트 번호를 다른 프로그램이나 데몬이 점유하고

    있음 • 해당 데몬을 종료시킴 • 예) apache, nginx가 8080 포트를 사용 중 § (macOS) 첫번째 단계에서 너무 오래 걸리거나 repository ... not found 오류 • homebrew에서 더 이상 사용되지 않는 패키지 저장소를 tap하고 있을 수 있음 • $ brew tap-info --installed • $ brew untap <github-repo-name> § (macOS) cannot start service backendai-half-xxxx: b'Mounts denied: ...\r\nis not shared from OS X and is not known to Docker. • Docker for Mac의 Preference 창에서 설치 진행 중인 디렉토리 또는 그 상위 디렉토리를 File Sharing 탭의 보안 예외 목록에 추가해준 다음 Apply & Restart 하고 설치를 다시 진행한다. 37 / 46
  38. 흔히 겪는 문제 § 설치 진행 중 누런 색깔의 warning

    log로 etcd 접속 오류가 반복해서 뜨고 있음 • docker 또는 docker-compose 설치가 제대로 안 되어 etcd 컨테이너가 뜨지 않은 상태에서 manager CLI로 etcd 명령어를 실행하면 계속 재시도하게 됨 • 간혹 docker-compose 자체가 너무 옛날 버전이어서 그런 경우도 있음 • docker-compose를 최신 버전으로 업데이트하고 실행 여부를 확인한 뒤 다시 진행한다. § pyenv 명령 오류 • 설치를 중단하고 source ~/.bashrc (또는 자신의 쉘의 설정파일) 실행 후 재시도한다. • 그래도 안 되면 직접 현재 쉘에서 다음 실행: ­ eval "$(~/.pyenv/bin/pyenv init -)" ­ export PATH="~/.pyenv/bin:$PATH" • 참고) 설정 자동 추가가 지원되는 쉘 설정파일 : zshrc, bashrc, profile, bash_profile 38 / 46
  39. 흔히 겪는 문제 § (macOS) 설치는 다 되었는데 코드 실행할

    때 발생하는 다음 오류 • -> Agent-side error: DockerError(500, 'OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \\"rootfs_linux.go:58: mounting \\\\\\"/Users/joongi/knu-class/backend.ai- dev/agent/src/ai/backend/helpers\\\\\\" to rootfs \\\\\\"/var/lib/docker/overlay2/ ... • Docker Desktop for Mac에서 File Sharing 설정에 ~/.pyenv가 없는 상태로 agent를 실행하여 backendai-krunner.v2.{ubuntu16.04,centos7.6,alpine3.8} 볼륨이 모두 빈 상태로 생성된 경우 발생 • docker volum rm 명령으로 위 볼륨을 모두 삭제하고, (만약 사용 중인 컨테이너가 있다는 오류가 발생하면 docker rm –f <containerID> 명령으로 강제 삭제) • File Sharing 설정에 ~/.pyenv를 추가하고 Docker 데몬을 재시작한 다음, • install-dev.sh 실행결과 말미에 안내된 대로 docker-compose 명령으로 컨테이너들을 다시 띄우고, • agent를 재실행하면 해결됨 39 / 46
  40. 유용한 manager.cli 명령어들 (1/2) [Manager] (venv-xxxx-manager) $ python –m ai.backend.manager.cli

    dbshell 설정된 주소와 인증 정보를 이용하여 database shell을 열어줌. SQL로 직접 데이터베이스 조작 가능. 위 명령을 실행하려면 psql-client 패키지(psql 명령어 제공)가 설치되어야 함. \dt : 모든 테이블 보기 \d+ tablename : 테이블 정의 보기 그 외 SQL 문장들은 끝에 세미콜론(;)을 붙여주고 실행 (venv-xxxx-manager) $ python –m ai.backend.manager.cli etcd get --prefix config etcd key-value store의 내용을 직접 조작할 수 있는 명령어 체계 제공함. Backend.AI의 prefix와 namespace가 이미 적용된 상태로 key 이름을 사용할 수 있다. $ docker exec –it xxxx_backendai-half-etcd_1 etcdctl get --prefix /sorna/local/config 위와 동일하지만 prefix, namespace 없이 날 것 그대로의 etcd 명령어를 쓸 수 있음. 40 / 46
  41. 유용한 manager.cli 명령어들 (2/2) [Manager] (venv-xxxx-manager) $ python –m ai.backend.manager.cli

    etcd rescan-images index.docker.io 현재 공개되어 있는 Backend.AI용 최신 Docker image 목록을 갱신한다. 이렇게 받아온 이미지 정보들은 etcd의 "images" key prefix 아래에 저장되며, 이후 해당 이미지를 사용하는 세션을 실행하면 agent가 자동으로 최신 버전을 받는다. (venv-xxxx-manager) $ python –m ai.backend.manager.cli etcd list-images Backend.AI manager가 알고 있는 모든 이미지 정보를 출력한다. (venv-xxxx-manager) $ python –m ai.backend.manager.cli etcd inpsect-image lablup/python:3.6-ubuntu18.04 특정 Docker image에 대해 Backend.AI manager가 알고 있는 정보를 출력한다. 이미지별로 필요한 최소 자원 요구량 등의 정보를 알 수 있다. 41 / 46
  42. Backend.AI 코드 구조 살펴보기 3차시 42 / 46

  43. 주요 컴포넌트 ai.backend.gateway ai.backend.manager ai.backend.agent └ ai.backend.agent.docker ai.backend.client ai.backend.kernel ai.backend.common

    ai.backend.runner # ai.backend.common User Program Agent Node Manager Node Container Client Node Redis PostgreSQL etcd /opt/backend.ai 43 / 46
  44. Backend.AI 기여 방법 3차시 44 / 46

  45. GitHub § https://github.com/lablup/backend.ai • "Meta" repository - 설치 스크립트와 README

    외에 별다른 내용은 없음 • 하위 프로젝트들은 backend.ai-xxxx 형태의 이름을 가지고 있음 § Issue • 어느 프로젝트와 연관된 내용인지 잘 모르겠으면 일단 meta repository에 issue 등록 • Feature Request / Bug Report 2가지 양식이 제공되지만, 별도 양식 사용하지 않고 일반적인 질문이나 기타 의견을 올릴 수도 있음 § Pull Request • 최소 요구 사항 : Contributor License Agreement 동의, flake8에 의한 코딩스타일 검사 통과 • 가능하면 최신 Python 표준 라이브러리 사용 (예: os.path 대신 pathlib) • 완성되지 않은 코드라도 일단 draft pull request로 올리고 피드백 받는 것도 좋음 § 채팅방 (GitHub 계정 연동) • https://gitter.im/lablup/Lobby 45 / 46
  46. Thank you! 들어주셔서 감사합니다! Lablup Inc. Backend.AI Backend.AI GitHub Backend.AI

    Cloud https://www.lablup.com https://www.backend.ai https://github.com/lablup/backend.ai https://cloud.backend.ai ! CB A ! / .! / .! : / .! . :: ! ! :: ! / .! :: : ! / .! :: .! / .! 46 / 46