본문으로 건너뛰기

22.03: 2022년 3월 업데이트

· 약 11분
Lablup

안녕하세요! Backend.AI 22.03 / Enterprise R2 의 2022년 3월 업데이트 개선 사항에 대해 알려드립니다!

6개월 단위의 통합 업데이트 릴리즈이며, 주요한 버그 수정 및 필수 기능 개선 사항은 Backend.AI 21.09 / Enterprise R2 에도 반영됩니다. Backend.AI 21.03 및 그 이전 버전은 현재 사용 중인 고객들을 위한 긴급한 보안 패치가 아닌 한 더 이상 업데이트가 제공되지 않습니다.

MLOps 지원 강화

AppProxy v2 정식 지원

기존에는 사용자가 컨테이너 내의 애플리케이션을 접근하기 위해 AppProxy로 접속하면 Manager를 거쳐야 했습니다. 간단한 상호작용을 위한 웹애플리케이션들까지는 큰 무리가 없었지만, 모델 서빙과 같이 보다 본격적인 트래픽 확장이 필요한 경우에 대응하기 어려웠죠. 이번 버전부터는 기존 방식의 사용도 계속 가능하지만 추가로 새로 개선된 AppProxy v2를 지원하여 Manager를 거치지 않고 직접 접속하는 것도 가능해졌습니다. 이에 따라 수평 확장 가능한 구조로 컨테이너 애플리케이션들을 서비스할 수 있게 되었습니다.

배치 세션 간 의존성 및 세션 상태 웹훅 지원

배치 세션 생성 시 기존의 배치 세션을 의존성으로 지정하는 옵션이 추가되었습니다. 이를 활용하면 앞선 작업이 성공적으로 종료되었을 때 다른 작업을 이어서 실행하도록 미리 예약해둘 수 있습니다. 또한 기존의 세션별 event streaming API에 더하여, 세션의 스케줄링·실행 상태가 변할 때마다 해당 정보를 담아 능동적으로 지정된 URL로 웹훅을 호출해주는 새 옵션도 추가되었습니다. 이 기능들은 API 및 SDK 레벨에서 직접 활용하실 수도 있고, 별도로 공개할 MLOps 파이프라인 인터페이스를 통해 활용하실 수 있습니다.

새로운 하드웨어 플랫폼 지원

Dell PowerScale 스토리지 통합

Storage-Proxy에 Dell PowerScale 스토리지 백엔드를 통합하여, 해당 스토리지를 사용하는 경우 보다 상세한 실시간 통계 및 모니터링 기능을 지원합니다.

이기종 아키텍처 클러스터 구성 지원

이제 실행환경 컨테이너 이미지가 다중 아키텍처용으로 빌드된 경우 이를 레지스트리에 등록 및 사용하는 것이 가능해졌으며, 클러스터의 각 연산노드에 설치되는 Backend.AI Agent의 CPU 아키텍처를 인식하여 스케줄링 시 아키텍처 유형에 따라 이미지를 선택 및 에이전트를 할당하도록 개선되었습니다. 이에 따라, 다중 아키텍처용 이미지를 배포하는 cr.backend.ai/multiarch 저장소를 새롭게 오픈하였습니다.

안정성 및 성능 강화

GPU fraction 할당 시 자동 round-down 적용

기존에는 GPU 리소스의 지나친 파편화를 막기 위해 GPU fraction 할당 시 너무 작은 소숫점 단위가 발생하면 기존에는 미리 지정된 양자화 크기에 따라 할당 실패를 리턴하였습니다. (예: 1.0 fGPU를 할당 시도했는데 남은 GPU 장치별 리소스 크기 제한으로 0.33, 0.33, 0.34씩 할당되었는데 양자 크기가 0.1인 경우 할당 실패로 처리)

이번 버전부터는 자동으로 양자 크기로 round-down함으로써 조금 적은 리소스가 할당되더라도 오류 대신 정상적인 세션 생성이 되도록 변경되었습니다. (예: 1.0 fGPU를 할당 시도했을 때 같은 조건에서 0.3, 0.3, 0.3씩 할당하고 성공으로 처리)

이때 할당 요청한 용량보다 실제 할당한 용량이 작은 경우 세션 정보에도 업데이트를 반영하여 실제 자원 사용량 또한 정확하게 반영합니다. 이에 따라 fractional GPU scaling 기능을 많이 활용하는 고객들의 편의성을 개선하였습니다.

데이터베이스 사용 최적화

많은 수의 사용자가 동시에 세션 생성 및 삭제 요청을 하는 경우 데이터베이스의 병목이 되었던 인증키별 세션 개수 추적 기능 및 컨테이너별 실시간 통계 수집 기능을 Redis 기반으로 동작하도록 이전하고, 과도한 오버헤드를 야기했던 단일 트랜잭션 내에서의 리소스 자동 보정 쿼리를 최적화하였습니다.

Python 3.10 업그레이드

Backend.AI 서버 엔진의 실행 환경을 Python 3.10으로 업그레이드하였습니다.

기타

  • 컨테이너 이미지 내에 시스템 패키지로 설치한 jemalloc을 사용하도록 빌드된 일부 애플리케이션을 실행할 때 컨테이너 자원 제약 계층과의 충돌이 발생하는 경우를 수정하였습니다.
  • 컨테이너 작업 디렉토리에 대한 반복적인 저장용량 스캔 기능을 비활성화하여 일부 환경에서 이로 인한 과도한 성능 저하를 막았습니다.

그외 사용자 인터페이스 및 사용성 개선 내용

  • 파일브라우저가 일반 연산 세션이 아닌 storage proxy가 관리하는 별도의 컨테이너로 분리되어 더 나은 파일 입출력 성능을 제공합니다. (BETA)
  • 세션 생성 요청이 지정한 시간 이상 스케줄링되지 않을 경우 자동 취소하는 pending timeout을 리소스 그룹별로 설정할 수 있게 되었습니다.
  • 리소스 그룹별로 실행을 허용할 세션 유형을 지정할 수 있습니다.
  • 가상 폴더를 컨테이너 내부 임의의 절대경로 위치에 마운트할 수 있게 되었습니다.
  • 가상 폴더의 하위 디렉토리를 컨테이너 내부 /home/work 하위 또는 임의의 절대경로 위치에 마운트할 수 있게 되었습니다.
  • WebUI에서 세션 정보를 좀 더 간결하게 확인할 수 있게 되었습니다.
  • 이제 WebUI에서 배치 세션과 인터랙티브 세션을 구분하여 보여줍니다.
  • CLI에서 서버의 정보를 조회하는 쿼리뿐만 아니라 변경하는 mutation 작업들에 대해서도 일관된 JSON 형식 출력을 제공합니다.
  • backend.ai-clientbackend.ai-client-cli 패키지를 분리하여, SDK를 타 애플리케이션 및 프레임워크와 통합하고자 할 때 의존성 충돌 가능성을 낮추었습니다. (BETA)
  • Storage proxy에서의 작업 오류 내용이 Manager API를 통해 전파될 때 오류 원인 및 관련 파일 경로에 대한 세부 사항이 더 잘 전달되도록 개선하였습니다.

개발 및 연구 프레임워크 지원

  • TensorFlow 2.7/2.8 지원
    • TensorFlow 2.7/2.8을 지원합니다. TF 2.8의 경우 TFX등의 호환 컴포넌트들이 아직 버전업을 모두 따라오지 않아 몇몇 TensorFlow 컴포넌트들은 빠져 있습니다.
  • PyTorch 1.10/1.11 지원
  • NGC TensorFlow/PyTorch 22.03, Triton 22.03 지원
    • NGC의 TensorFlow 이미지의 2022년 03월 버전을 지원합니다.
    • NGC의 PyTorch 이미지의 2022년 03월 버전을 지원합니다.
    • Nvidia Triton 서비스 이미지의 2022년 03월 버전을 지원합니다.
  • GPU 기반의 Julia 1.7 및 FluxML 지원
    • CUDA GPU 가속 기반의 Julia 1.7을 지원합니다.
    • FluxML을 CUDA 11.3 기반의 GPU 가속과 함께 제공합니다.
  • (클라우드) R studio 지원
    • R Studio를 Backend.AI Cloud에서도 데스크탑 앱의 지원 없이 웹에서 바로 지원합니다.
  • Weights & Bias 통합 지원 (베타)
    • Backend.AI 위에서 W&B를 쉽게 돌릴 수 있도록 통합 제공합니다. 아직 베타 버전이며, 4월 말부터 정식으로 제공될 예정입니다.