Exafunction은 AWS Inferentia를 지원하여 기계 학습 추론 PlatoBlockchain 데이터 인텔리전스를 위한 최고의 가격 대비 성능을 제공합니다. 수직 검색. 일체 포함.

Exafunction은 AWS Inferentia를 지원하여 기계 학습 추론을 위한 최고의 가격 대비 성능을 제공합니다.

모든 산업 분야에서 기계 학습(ML) 모델은 더욱 심화되고 워크플로는 더욱 복잡해지고 있으며 워크로드는 더 큰 규모로 운영되고 있습니다. 이 투자는 더 나은 제품과 경험으로 직접 이어지기 때문에 이러한 모델을 더 정확하게 만들기 위해 상당한 노력과 자원이 투자됩니다. 반면에 이러한 모델을 프로덕션에서 효율적으로 실행하는 것은 성능 및 예산 목표 달성의 핵심임에도 불구하고 종종 간과되는 중요한 작업입니다. 이 게시물에서는 Exafunction과 AWS 인 페렌 시아 함께 작업하여 프로덕션에서 ML 모델을 쉽고 비용 효율적으로 배포할 수 있습니다.

엑사펑션 는 기업이 가능한 한 효율적으로 규모에 맞게 ML을 수행할 수 있도록 지원하는 데 중점을 둔 스타트업입니다. 그들의 제품 중 하나는 엑사디플로이, 규모에 맞게 ML 워크로드를 제공하는 사용하기 쉬운 SaaS 솔루션입니다. ExaDeploy는 혼합 리소스(CPU 및 하드웨어 가속기)에서 ML 워크로드를 효율적으로 조정하여 리소스 활용도를 극대화합니다. 또한 자동 확장, 컴퓨팅 코로케이션, 네트워크 문제, 내결함성 등을 처리하여 효율적이고 안정적인 배포를 보장합니다. AWS Inferentia 기반 Amazon EC2 Inf1 인스턴스 클라우드에서 가장 낮은 추론당 비용을 제공하도록 특별히 제작되었습니다. ExaDeploy는 이제 Inf1 인스턴스를 지원하므로 사용자는 가속기의 하드웨어 기반 절약과 최적화된 리소스 가상화 및 오케스트레이션의 소프트웨어 기반 절약을 모두 얻을 수 있습니다.

솔루션 개요

ExaDeploy가 배포 효율성을 해결하는 방법

컴퓨팅 리소스를 효율적으로 활용하려면 적절한 리소스 할당, 자동 확장, 컴퓨팅 코로케이션, 네트워크 비용 및 대기 시간 관리, 내결함성, 버전 관리 및 재현성 등을 고려해야 합니다. 규모에 따라 모든 비효율성은 비용과 대기 시간에 실질적으로 영향을 미치며 많은 대기업은 내부 팀과 전문 지식을 구축하여 이러한 비효율성을 해결했습니다. 그러나 대부분의 회사에서 회사가 원하는 핵심 역량이 아닌 일반화 가능한 소프트웨어를 구축하는 이러한 재정적 및 조직적 오버헤드를 가정하는 것은 실용적이지 않습니다.

ExaDeploy는 자율 주행 차량 및 자연어 처리(NLP) 애플리케이션과 같은 가장 복잡한 일부 워크로드에서 볼 수 있는 것을 포함하여 이러한 배포 효율성 문제를 해결하도록 설계되었습니다. 일부 대규모 배치 ML 워크로드에서 ExaDeploy는 대기 시간이나 정확성을 희생하지 않고 통합 시간을 엔지니어 일 85일로 단축하여 비용을 XNUMX% 이상 절감했습니다. ExaDeploy는 시스템 저하 없이 수천 개의 동시 하드웨어 가속기 리소스 인스턴스를 자동 확장하고 관리하는 것으로 입증되었습니다.

ExaDeploy의 주요 기능은 다음과 같습니다.

  • 클라우드에서 실행: 모델, 입력 또는 출력이 사설 네트워크를 떠나지 않습니다. 클라우드 공급자 할인을 계속 사용하십시오.
  • 공유 가속기 리소스: ExaDeploy는 가속기 리소스를 공유하기 위해 여러 모델 또는 워크로드를 활성화하여 사용되는 가속기를 최적화합니다. 또한 여러 워크로드가 동일한 모델을 배포하는지 식별한 다음 해당 워크로드 간에 모델을 공유하여 사용되는 가속기를 최적화할 수 있습니다. 자동 재조정 및 노드 드레이닝 기능은 활용도를 극대화하고 비용을 최소화합니다.

Exafunction은 AWS Inferentia를 지원하여 기계 학습 추론 PlatoBlockchain 데이터 인텔리전스를 위한 최고의 가격 대비 성능을 제공합니다. 수직 검색. 일체 포함.

  • 확장 가능한 서버리스 배포 모델: ExaDeploy는 액셀러레이터 리소스 포화도에 따라 자동으로 확장됩니다. 0 또는 최대 수천 개의 리소스까지 동적으로 축소합니다.
  • 다양한 계산 유형 지원: 임의의 C++ 코드, CUDA 커널, 사용자 정의 작업 및 Python 함수뿐만 아니라 모든 주요 ML 프레임워크에서 딥 러닝 모델을 오프로드할 수 있습니다.
  • 동적 모델 등록 및 버전 관리: 시스템을 재구축하거나 재배포하지 않고도 새로운 모델이나 모델 버전을 등록하고 실행할 수 있습니다.
  • 지점간 실행: 클라이언트는 원격 가속기 리소스에 직접 연결하여 짧은 대기 시간과 높은 처리량을 지원합니다. 상태를 원격으로 저장할 수도 있습니다.
  • 비동기 실행: ExaDeploy는 클라이언트가 원격 가속기 리소스 작업과 로컬 계산을 병렬화할 수 있도록 하는 모델의 비동기 실행을 지원합니다.
  • 내결함성 원격 파이프라인: ExaDeploy를 사용하면 클라이언트가 내결함성을 보장하는 파이프라인에 원격 계산(모델, 전처리 등)을 동적으로 구성할 수 있습니다. ExaDeploy 시스템은 자동 복구 및 재생을 통해 포드 또는 노드 장애를 처리하므로 개발자는 내결함성 보장에 대해 생각할 필요가 없습니다.
  • 즉시 사용 가능한 모니터링: ExaDeploy는 Prometheus 메트릭과 Grafana 대시보드를 제공하여 가속기 리소스 사용량 및 기타 시스템 메트릭을 시각화합니다.

ExaDeploy는 AWS Inferentia를 지원합니다.

AWS Inferentia 기반 Amazon EC2 Inf1 인스턴스는 딥 러닝 관련 추론 워크로드용으로 설계되었습니다. 이러한 인스턴스는 현재 세대의 GPU 추론 인스턴스에 비해 최대 2.3배의 처리량과 최대 70%의 비용 절감 효과를 제공합니다.

ExaDeploy는 이제 AWS Inferentia를 지원하며 함께 목적에 맞게 구축된 하드웨어 가속 및 최적화된 리소스 오케스트레이션을 통해 향상된 성능 및 비용 절감을 실현합니다. 매우 일반적인 최신 ML 워크로드인 배치 혼합 컴퓨팅 워크로드를 고려하여 ExaDeploy와 AWS Inferentia의 결합된 이점을 살펴보겠습니다.

가상 워크로드 특성:

  • 15ms의 CPU 전용 전처리/후처리
  • 모델 추론(GPU에서 15ms, AWS Inferentia에서 5ms)
  • 클라이언트 10개, 각각 20ms마다 요청
  • CPU:Inferentia:GPU의 대략적인 상대 비용은 1:2:4입니다(c2.xlarge, inf5.xlarge 및 g1dn.xlarge에 대한 Amazon EC4 온디맨드 요금 기준).

아래 표는 각 옵션이 어떻게 형성되는지 보여줍니다.

설정 필요한 리소스 비용 숨어 있음
ExaDeploy가 없는 GPU 클라이언트당 CPU 2개, GPU 2개(총 CPU 20개, GPU 20개) 100 30 MS
ExaDeploy가 포함된 GPU 8개의 클라이언트에서 공유되는 10개의 GPU, 클라이언트당 1개의 CPU 42 30 MS
ExaDeploy가 없는 AWS Inferentia CPU 1개, 클라이언트당 AWS Inferentia 1개(총 CPU 10개, Inferentia 10개) 30 20 MS
ExaDeploy를 사용한 AWS Inferentia 3개의 클라이언트에서 공유되는 10개의 AWS Inferentia, 클라이언트당 CPU 1개 16 20 MS

AWS Inferentia 예제의 ExaDeploy

이 섹션에서는 BERT PyTorch 모델에서 inf1 노드가 있는 예제를 통해 ExaDeploy를 구성하는 단계를 살펴봅니다. 우리는 bert-base 모델에 대해 초당 1140개 샘플의 평균 처리량을 확인했으며, 이는 이 단일 모델, 단일 워크로드 시나리오에 대해 ExaDeploy에 의해 도입된 오버헤드가 거의 또는 전혀 없음을 보여줍니다.

1단계: 설정 Amazon Elastic Kubernetes 서비스 (Amazon EKS) 클러스터

Amazon EKS 클러스터는 다음과 같이 불러올 수 있습니다. 테라포밍 AWS 모듈. 이 예에서는 inf1.xlarge AWS Inferentia용.

2단계: ExaDepoy 설정

두 번째 단계는 ExaDeploy를 설정하는 것입니다. 일반적으로 inf1 인스턴스에 ExaDeploy를 배포하는 것은 간단합니다. 설정은 대부분 그래픽 처리 장치(GPU) 인스턴스에서와 동일한 절차를 따릅니다. 주요 차이점은 모델 태그를 GPU에서 AWS Inferentia로 변경하고 모델을 다시 컴파일하는 것입니다. 예를 들어 ExaDeploy의 API(애플리케이션 프로그래밍 인터페이스)를 사용하여 g4dn에서 inf1 인스턴스로 이동하려면 약 10줄의 코드만 변경하면 됩니다.

  • 한 가지 간단한 방법은 Exafunction의 Terraform AWS Kubernetes 모듈 or 헬름 차트. 이들은 Amazon EKS 클러스터에서 실행할 핵심 ExaDeploy 구성 요소를 배포합니다.
  • 모델을 직렬화된 형식(예: TorchScript, TF 저장 모델, ONNX 등)으로 컴파일합니다. AWS Inferentia의 경우 다음을 따랐습니다. 이 튜토리얼.
  • ExaDeploy의 모듈 저장소에 컴파일된 모델을 등록합니다.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • 모델에 대한 데이터를 준비합니다(즉, ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • 클라이언트에서 원격으로 모델을 실행합니다.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy 및 AWS Inferentia: 함께 사용하면 더 좋습니다

AWS Inferentia는 모델 추론을 위한 처리량의 한계를 확장하고 클라우드에서 가장 낮은 추론당 비용을 제공합니다. 즉, 기업은 Inf1의 가격 대비 성능 이점을 대규모로 누리기 위해 적절한 오케스트레이션이 필요합니다. ML 제공은 사내에서 해결하는 경우 회사 목표에서 제외되고 종종 제품 일정을 지연시키는 전문 지식이 필요한 복잡한 문제입니다. Exafunction의 ML 배포 소프트웨어 솔루션인 ExaDeploy가 업계 선두주자로 부상했습니다. 세계 정상급 팀의 원활한 통합 경험과 지원을 제공하면서 가장 복잡한 ML 워크로드도 처리합니다. ExaDeploy와 AWS Inferentia를 함께 사용하면 규모에 맞게 추론 워크로드의 성능을 높이고 비용을 절감할 수 있습니다.

결론

이 게시물에서는 Exafunction이 성능 ML을 위해 AWS Inferentia를 지원하는 방법을 보여주었습니다. Exafunction으로 애플리케이션을 구축하는 방법에 대한 자세한 내용은 다음 사이트를 참조하십시오. 엑사펑션. Inf1에서 딥 러닝 워크로드를 구축하는 모범 사례는 다음 사이트를 참조하십시오. Amazon EC2 Inf1 인스턴스.


저자에 관하여

Nicholas Jiang, 소프트웨어 엔지니어, Exafunction

Jonathan Ma, 소프트웨어 엔지니어, Exafunction

Prem Nair, 소프트웨어 엔지니어, Exafunction

Anshul Ramachandran, 소프트웨어 엔지니어, Exafunction

Shruti Koparkar, 선임 제품 마케팅 관리자, AWS

타임 스탬프 :

더보기 AWS 기계 학습