Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leri ile konuşlandırın | Amazon Web Hizmetleri

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leri ile konuşlandırın | Amazon Web Hizmetleri

Geçen hafta, Teknoloji İnovasyon Enstitüsü (TII) başlattı TSEV Falcon LLM, açık kaynaklı bir temel büyük dil modeli (LLM). 1 trilyon token üzerinde eğitildi Amazon Adaçayı YapıcıFalcon, birinci sınıf performansıyla övünüyor Sarılma Yüzü liderlik tablosu Lama-65B gibi diğer LLM'lere göre nispeten hafif ve barındırması daha ucuz olmasına rağmen bu yazının yazıldığı sırada). Bu yazıda, SageMaker'da büyük model çıkarımı derin öğrenme kapsayıcılarını kullanarak dil anlama ve otomatik yazma yardımı gibi uygulamalar için Falcon'un nasıl dağıtılacağını gösteriyoruz.

Falcon SageMaker'a indi

TII, Abu Dabi'deki uygulamalı araştırma kuruluşudur. İleri Teknoloji Araştırma Konseyi; bilim insanları, araştırmacılar ve mühendislerden oluşan ekibi, dönüştürücü teknolojilerin keşfedilmesine ve toplumumuzu geleceğe hazırlayacak bilimsel atılımların geliştirilmesine kendini adamıştır. Bu yılın başlarında, TSEV son teknolojiye sahip, açık kaynaklı bir LLM yetiştirmek üzere yola çıktı ve işi bitirmek için SageMaker'ın altyapısını, araçlarını ve uzmanlığını kullandı (bu modelin SageMaker'da nasıl eğitildiği hakkında daha fazla bilgi edinmek için) , bakın Teknoloji İnovasyon Enstitüsü, Amazon SageMaker'da son teknoloji ürünü Falcon LLM 40B temel modelini eğitiyor). Bu çabanın sonucu TSEV Falcon LLM.

1 trilyon token üzerinde eğitilen Falcon, rakiplere karşı birinci sınıf performansa sahip Eleuther AI Dil Modeli Değerlendirme Sistemi ve şu anda listede 1 numara Sarılma Yüzü liderlik tablosu doğruluk için. Model, Falcon-40B ve Falcon-7B olmak üzere iki farklı boyutta mevcuttur ve dil anlama, konuşma deneyimleri ve otomatik yazma yardımı gibi uygulamalarda en gelişmiş performans için kullanılabilir. Bu gönderi, bu tür alanlarda yüksek doğruluklu çıkarımlar için Falcon'u SageMaker'da dağıtmaya başlamanıza yardımcı olacaktır.

SageMaker büyük model çıkarım DLC'leri LLM barındırmayı basitleştirir

Falcon-40B ve Falcon-7B gibi Yüksek Lisans'lara ev sahipliği yapmak zor olabilir. Milyarlarca parametre içerdikleri için daha büyük modeller genellikle daha doğrudur, ancak boyutları aynı zamanda daha yavaş çıkarım gecikmesine veya daha kötü aktarım hızına da neden olabilir. Bir LLM'yi barındırmak, kabul edilebilir bir performans elde etmek için daha fazla GPU belleği ve optimize edilmiş çekirdekler gerektirebilir. İşleri daha da karmaşık hale getirmek için, Falcon-7B gibi daha küçük modeller genellikle AWS G10 bulut sunucusu türlerini destekleyen NVIDIA A5G bulut sunucusu gibi tek bir GPU'ya sığabilse de Falcon-40B gibi daha büyük modeller bunu yapamaz. Bu gerçekleştiğinde, daha büyük modeli birden fazla parçaya bölmek ve birden fazla GPU'nun belleğinden yararlanmak için tensör paralelliği gibi stratejilerin kullanılması gerekir. Daha küçük modeller için kullanılan eski barındırma çözümleri genellikle bu tür işlevsellik sunmuyor ve bu da zorluğu artırıyor.

SageMaker büyük model çıkarımı (LMI) derin öğrenme kapsayıcıları (DLC'ler) yardımcı olabilir. LMI DLC'leri Falcon-40B gibi LLM'leri barındırmak için eksiksiz bir uçtan uca çözümdür. Ön uçta, verimi artırmak için bir bulut sunucusu içinde belirteç akışı ve otomatik model çoğaltma gibi özelliklerle büyük model çıkarımı için tasarlanmış yüksek performanslı bir model sunucusu (DJL Hizmeti) içerirler. Arka uçta, LMI DLC'leri ayrıca DeepSpeed ​​ve FasterTransformer gibi birden fazla GPU'da model parametrelerini parçalayabilen ve yönetebilen çeşitli yüksek performanslı model paralel motorları içerir. Bu motorlar ayrıca popüler transformatör modelleri için, çıkarımı üç kata kadar daha hızlı hızlandırabilen optimize edilmiş çekirdekler içerir. LMI DLC'leri ile SageMaker'da LLM barındırma hizmetine başlamak için bir yapılandırma dosyası oluşturmanız yeterlidir. SageMaker LMI DLC'leri hakkında daha fazla bilgi edinmek için bkz. Model paralelliği ve büyük model çıkarımı ve mevcut görsellerin listesi. Ayrıca hosting ile ilgili önceki yazımıza da göz atabilirsiniz. SageMaker'da Bloom-175B LMI DLC'lerini kullanma.

Çözüme genel bakış

Bu gönderi, LMI DLC'lerini kullanarak SageMaker'da DeepSpeed ​​kullanarak Falcon-40B'yi nasıl barındıracağınız konusunda size yol gösterir. Falcon-40B birden fazla A10 GPU kullanmamızı gerektirirken Falcon-7B yalnızca tek bir GPU gerektiriyor. Ayrıca Falcon-40B ve Falcon-7B'yi hem DeepSpeed ​​hem de Accelerate kullanarak barındırmak için başvurabileceğiniz örnekler hazırladık. Kod örneklerimizi adresinde bulabilirsiniz. GitHub.

Bu örnek SageMaker not defteri örneklerinde çalıştırılabilir veya Amazon SageMaker Stüdyosu defterler. Falcon-40B'yi LMI ve DeepSpeed ​​kullanarak barındırmak için ml.g5.24xlarge örneğini kullanmamız gerekiyor. Bu örnekler, her biri 4 GiB GPU belleğini destekleyen 10x NVIDIA A96G GPU sağlar. Ayrıca ana bilgisayar, 96 vCPU ve 384 GiB ana bilgisayar belleği sağlar. LMI kapsayıcısı, modelin indirilmesi ve model yapısının bölümlenmesi de dahil olmak üzere, LLM'lerin barındırılmasıyla ilişkili farklılaştırılmamış ağır yüklerin çoğunun ele alınmasına yardımcı olacak, böylece onu oluşturan parametreler birden fazla GPU'ya yayılabilecektir.

SageMaker makine öğrenimi (ML) örneklerine yönelik kotalar hesaplar arasında değişiklik gösterebilir. Bu gönderiyi takip ederken g5.24xlarge bulut sunucuları için kotanızı aştığınızı belirten bir hata alırsanız limiti şu adresten artırabilirsiniz: Hizmet Kotaları konsolu.

Dizüstü bilgisayar kılavuzu

Başlamak için örneğimiz için gerekli bağımlılıkları yükleyip içe aktararak başlıyoruz. Boto3 SDK'nın yanı sıra SageMaker SDK'yı da kullanıyoruz. Kullandığımızı unutmayın Amazon Basit Depolama Hizmeti (Amazon S3) SageMaker ve LMI'nin kullanması için ihtiyaç duyduğumuz model yapıtlarını depolamak için, buna göre bir S3 önek değişkeni ayarladık. Aşağıdaki koda bakın:

import sagemaker
import jinja2
from sagemaker import image_uris
import boto3
import os
import time
import json
from pathlib import Path
from sagemaker.utils import name_from_base role = sagemaker.get_execution_role() # execution role for the endpoint
sess = sagemaker.session.Session() # sagemaker session for interacting with different AWS APIs
bucket = sess.default_bucket() # bucket to house artifacts
model_bucket = sess.default_bucket() # bucket to house artifacts
s3_code_prefix_deepspeed = "hf-large-model-djl-/code_falcon40b/deepspeed" # folder within bucket where code artifact will go
region = sess._region_name
account_id = sess.account_id()
s3_client = boto3.client("s3")
sm_client = boto3.client("sagemaker")
smr_client = boto3.client("sagemaker-runtime")
jinja_env = jinja2.Environment()

Daha sonra çalışma alanımızın model yapıtlarımızı depolaması için yerel bir klasör oluşturuyoruz:

!mkdir -p code_falcon40b_deepspeed

ilk önce bir tane oluşturuyoruz serving.properties Oluşturduğumuz yerel dizindeki yapılandırma dosyası. Bu serving.properties dosyası, LMI kapsayıcısına ve ön uç DJL Hizmet kitaplığına hangi model paralelleştirme ve çıkarım optimizasyon motorunu kullanmak istediğimizi gösterir. Hem DeepSpeed ​​hem de Hugging Face Accelerate için yapılandırma seçeneklerini şurada bulabilirsiniz: Yapılandırmalar ve ayarlar. Burada, ayarladığımızı unutmayın. option.model_id Hangi Hugging Face modelinin alınacağını tanımlayan parametre. SageMaker, Hugging Face modelleriyle çalışmayı basitleştirir ve ihtiyacınız olan tek şey bu tek çizgidir. Ayrıca, belirlediğimiz option.tensor_parallel_degree değerini 4'e çıkarıyoruz çünkü ml.g5.24xlarge örneğimizde dört GPU'muz var. Bu parametre, modelin kaç bölümünün oluşturulacağını ve dağıtılacağını tanımlar. Ml.g5.48xlarge gibi sekiz GPU'lu daha büyük bir örnek kullanmış olsaydık ve değeri hala 4 olarak ayarlasaydık, LMI'nın otomatik olarak modelin iki kopyasını (her biri dört GPU'ya yayılmış iki kopya) oluşturacağını unutmayın. Aşağıdaki koda bakın:

%%writefile ./code_falcon40b_deepspeed/serving.properties
engine=Python
#to deploy falcon-40b-instruct set the model_id value to 'tiiuae/falcon-40b-instruct'
option.model_id=tiiuae/falcon-40b
option.tensor_parallel_degree=4
#option.s3url = {{s3url}}

Ayrıca değiştirebilirsiniz tiiuae/falcon-40b ile tiiuae/falcon-40b-instruct ihtiyaçlarınızı daha iyi karşılıyorsa.

Ayrıca şunları da dahil ediyoruz: requirements.txt İhtiyacınız olan paketleri yüklemek için belirtebileceğiniz dosya:

%%writefile ./code_falcon40b_deepspeed/requirements.txt
einops
torch==2.0.1

İhtiyacımız olan son şey model.py modelinizle kullanılacak dosya:

%%writefile ./code_falcon40b_deepspeed/model.py
from djl_python import Input, Output
import os
import torch
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
from typing import Any, Dict, Tuple
import warnings predictor = None def get_model(properties): model_name = properties["model_id"] local_rank = int(os.getenv("LOCAL_RANK", "0")) model = AutoModelForCausalLM.from_pretrained( model_name, low_cpu_mem_usage=True, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained(model_name) generator = pipeline( task="text-generation", model=model, tokenizer=tokenizer, device_map="auto" ) return generator def handle(inputs: Input) -> None: global predictor if not predictor: predictor = get_model(inputs.get_properties()) if inputs.is_empty(): # Model server makes an empty call to warmup the model on startup return None data = inputs.get_as_json() text = data["text"] text_length = data["text_length"] outputs = predictor(text, do_sample=True, min_length=text_length, max_length=text_length) result = {"outputs": outputs} return Output().add_as_json(result)

Bu kadar! Bu noktada Falcon-40B'yi DeepSpeed ​​ile konuşlandırmak için ihtiyaç duyacağınız tüm eserleri oluşturduk! Dizini bir *.tar.gz dosyasına paketleyip Amazon S3'e yüklüyoruz. Gerçek modelin bu dosyaya indirilmediğini veya paketlenmediğini unutmayın. LMI kapsayıcısı sizin için modeli doğrudan Hugging Face'ten indirecektir. Ayrıca, modelin kendi kopyasının indirilmesi daha performanslı olacak bir konumda olmasını istiyorsanız bir S3 klasörünü hedefleme seçeneğiniz de vardır. LMI ayrıca Amazon S3'ten yüksek performansla indirmeye yönelik optimizasyonu da içerir. Aşağıdaki koda bakın:

s3_code_artifact_deepspeed= sess.upload_data("model.tar.gz", bucket, s3_code_prefix_deepspeed)
print(f"S3 Code or Model tar for deepspeed uploaded to --- > {s3_code_artifact_deepspeed}")

Bu noktada yapmamız gereken tek şey kullanmak istediğimiz konteyneri tanımlayıp bir model nesnesi oluşturmak:

inference_image_uri = ( f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0.22.1-deepspeed0.8.3-cu118"
)
model_name_acc = name_from_base(f"falcon40b-model-ds")
create_model_response = sm_client.create_model( ModelName=model_name_acc, ExecutionRoleArn=role, PrimaryContainer={"Image": inference_image_uri, "ModelDataUrl": s3_code_artifact_deepspeed},
)
model_arn = create_model_response["ModelArn"]

Daha sonra bir uç nokta konfigürasyonu oluşturup uç noktayı oluşturuyoruz:


endpoint_config_name = f"{model_name}-config"
endpoint_name = f"{model_name}-endpoint"
endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", "ModelName": model_name, "InstanceType": "ml.g5.24xlarge", "InitialInstanceCount": 1, "ModelDataDownloadTimeoutInSeconds": 3600, "ContainerStartupHealthCheckTimeoutInSeconds": 3600, # "VolumeSizeInGB": 512 }, ],
)
endpoint_config_response create_endpoint_response = sm_client.create_endpoint( EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)
print(f"Created Endpoint: {create_endpoint_response['EndpointArn']}")

Başarılı barındırma için akılda tutulması gereken yapılandırma öğeleri

Büyük model barındırmada dikkate alınması gereken önemli bir husus, modelin Hugging Face'ten indirilmesi için yeterli zamanın olmasını sağlamaktır. Testlerimizde Falcon-40B'nin bulut sunucusuna indirilmesi yaklaşık 90 dakika sürdü. Buna izin verecek temel konfigürasyonlar şunlardır: ContainerStartupHealthCheckTimeoutInSeconds ve ModelDataDownloadTimeoutInSeconds. Bunların her biri için SageMaker uç nokta yapılandırmasının 3600 değerine sahip olduğundan emin olun. Ek olarak, model indirme süresini yaklaşık 3 dakikaya indiren S5cmd yardımcı programını kullanan LLMS için özel olarak tasarlanmış LMI kapsayıcılarını kullanarak orijinal model hayvanat bahçesi yerine Amazon S10'ten indirme yapmak çok daha kolaydır.

Çağrı yaparak uç noktanın durumunu izleyebilirsiniz. DescribeEndpoint, her şeyin ne zaman tamamlandığını size söyleyecektir. Uç noktanız artık çıkarım isteklerine yanıt vermeye hazır! LMI sizin için model bölümleme ve orkestrasyon işlemlerini gerçekleştirdiğinden, her istek ml.g4xlarge örneğimizde bulunan 5.12 GPU'nun tümü kullanılarak işlenecektir. Bu, Yüksek Lisans Derecelerini barındırmamıza ve GPU hızlandırıcılarını yatay olarak ölçeklendirirseniz performansı artırmamıza olanak tanır. Aşağıdaki koda bakın:

response_model = smr_client.invoke_endpoint( EndpointName=endpoint_name, Body=json.dumps({"text": "What is the purpose of life?", "text_length": 150}), ContentType="application/json",
) response_model["Body"].read().decode("utf8")

İşiniz bittiyse ve uç nokta yapılandırmasını, uç noktayı ve model nesnesini silmek istiyorsanız aşağıdaki komutları çalıştırabilirsiniz:

sm_client.delete_endpoint(EndpointName=endpoint_name)
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
sm_client.delete_model(ModelName=model_name)

Bu yazıda referans verdiğimiz bu kodu tam olarak bulabilirsiniz. GitHub'daki not defteri.

Sonuç

SageMaker Hosting ve LMI DLC, Falcon-40B gibi Yüksek Lisans'lara ev sahipliği yapmanızı kolaylaştırır. Modelleri birden fazla GPU'da barındırmak için gerekenlerin düzenlenmesinde farklılaşmamış ağır yükü üstlenir ve ihtiyaçlarınıza uyacak şekilde yapılandırılabilir seçenekler sunar. Ayrıca Hugging Face modellerinin kullanımı, bu modellere yönelik yerleşik destek sayesinde çok kolay hale geliyor.

Bu yazımızda DeepSpeed ​​kullanarak Falcon-40B modelini barındırmak için SageMaker'ı nasıl kullanabileceğinizi gösterdik. Ayrıca, örnekler de verdik. GitHub Falcon-40B'yi Accelerate kullanarak ve daha küçük Falcon-7B modellerini barındırmak için. Bunu LMI ile SageMaker'da denemenizi ve bugüne kadarki en iyi performansa sahip halka açık LLM'yi uygulamalı olarak denemenizi öneririz!


yazarlar hakkında

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.James Park Amazon Web Services'ta bir Çözüm Mimarıdır. AWS'de teknoloji çözümleri tasarlamak, oluşturmak ve dağıtmak için Amazon.com ile birlikte çalışıyor ve yapay zeka ve makine öğrenimine özel bir ilgisi var. Boş zamanlarında yeni kültürler, yeni deneyimler aramayı ve en son teknoloji trendlerini takip etmeyi seviyor.Onu şu adreste bulabilirsiniz: LinkedIn.

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Abhi Shivaditya AWS'de Yapay Zeka, dağıtılmış bilgi işlem, ağ iletişimi ve depolama gibi alanlarda AWS hizmetlerinin benimsenmesini kolaylaştırmak için stratejik küresel kurumsal kuruluşlarla birlikte çalışan Kıdemli Çözüm Mimarıdır. Uzmanlığı, Doğal Dil İşleme (NLP) ve Bilgisayarla Görü alanlarındaki Derin Öğrenmede yatmaktadır. Abhi, müşterilerin AWS ekosisteminde yüksek performanslı makine öğrenimi modellerini verimli bir şekilde dağıtmalarına yardımcı olur.

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Robert Van Düsen Amazon SageMaker'da Kıdemli Ürün Yöneticisidir. Büyük model çıkarımı gibi uygulamalar için derin öğrenme modeli optimizasyonuna öncülük ediyor.

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Evandro Franco Amazon Web Services üzerinde çalışan bir AI/ML Uzman Çözüm Mimarıdır. AWS müşterilerinin AWS'nin yanı sıra AI/ML ile ilgili iş zorluklarının üstesinden gelmesine yardımcı oluyor. Yazılım geliştirme, altyapı, sunucusuz çalışma ve makine öğrenimine kadar teknolojiyle ilgili 15 yılı aşkın süredir çalışıyor.

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Qing Lan AWS'de Yazılım Geliştirme Mühendisidir. Amazon'da yüksek performanslı ML çıkarım çözümleri ve yüksek performanslı günlük kaydı sistemi dahil olmak üzere birçok zorlu ürün üzerinde çalışıyor. Qing'in ekibi, Amazon Advertising'de çok düşük gecikme süresi gerektiren ilk Milyar parametre modelini başarıyla başlattı. Qing, altyapı optimizasyonu ve Derin Öğrenme hızlandırması hakkında derinlemesine bilgi sahibidir.

Falcon-40B'yi Amazon SageMaker'da büyük model çıkarım DLC'leriyle dağıtın | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Frank Liu AWS Deep Learning için Yazılım Mühendisidir. Yazılım mühendisleri ve bilim adamları için yenilikçi derin öğrenme araçları oluşturmaya odaklanıyor. Boş zamanlarında arkadaşları ve ailesi ile yürüyüş yapmayı sever.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi