Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon

Các mô hình AI sáng tạo đã có sự tăng trưởng nhanh chóng trong những tháng gần đây nhờ khả năng ấn tượng của nó trong việc tạo ra văn bản, hình ảnh, mã và âm thanh chân thực. Trong số các mô hình này, mô hình Khuếch tán ổn định nổi bật nhờ sức mạnh độc đáo trong việc tạo ra hình ảnh chất lượng cao dựa trên lời nhắc bằng văn bản. Khuếch tán ổn định có thể tạo ra nhiều loại hình ảnh chất lượng cao, bao gồm chân dung thực tế, phong cảnh và thậm chí cả nghệ thuật trừu tượng. Và, giống như các mô hình AI tổng quát khác, các mô hình Khuếch tán ổn định yêu cầu khả năng tính toán mạnh mẽ để cung cấp khả năng suy luận có độ trễ thấp.

Trong bài đăng này, chúng tôi trình bày cách bạn có thể chạy các mô hình Khuếch tán ổn định và đạt được hiệu suất cao với chi phí thấp nhất trong Đám mây điện toán đàn hồi Amazon (Amazon EC2) sử dụng Phiên bản Amazon EC2 Inf2 được hỗ trợ bởi Suy luận AWS2. Chúng ta xem xét kiến ​​trúc của mô hình Khuếch tán ổn định và thực hiện các bước biên soạn mô hình Khuếch tán ổn định bằng cách sử dụng Tế bào thần kinh AWS và triển khai nó vào phiên bản Inf2. Chúng tôi cũng thảo luận về những tối ưu hóa mà Neuron SDK tự động thực hiện để cải thiện hiệu suất. Bạn có thể chạy cả phiên bản Stable Diffusion 2.1 và 1.5 trên AWS Inferentia2 một cách tiết kiệm chi phí. Cuối cùng, chúng tôi trình bày cách bạn có thể triển khai mô hình Khuếch tán ổn định cho phiên bản Inf2 với Amazon SageMaker.

Kích thước mô hình Khuếch tán ổn định 2.1 ở dấu phẩy động 32 (FP32) là 5 GB và 2.5 GB ở bfoat16 (BF16). Một phiên bản inf2.xlarge duy nhất có một bộ tăng tốc AWS Inferentia2 với bộ nhớ HBM 32 GB. Mô hình Stable Diffusion 2.1 có thể vừa với một phiên bản inf2.xlarge duy nhất. Khuếch tán ổn định là mô hình chuyển văn bản thành hình ảnh mà bạn có thể sử dụng để tạo hình ảnh có phong cách và nội dung khác nhau chỉ bằng cách cung cấp lời nhắc văn bản làm đầu vào. Để tìm hiểu thêm về kiến ​​trúc mô hình Khuếch tán ổn định, hãy tham khảo Tạo hình ảnh chất lượng cao với các mô hình Khuếch tán ổn định và triển khai chúng một cách tiết kiệm chi phí với Amazon SageMaker.

Cách SDK Neuron tối ưu hóa hiệu suất Khuếch tán ổn định

Trước khi có thể triển khai mô hình Khuếch tán ổn định 2.1 trên các phiên bản AWS Inferentia2, chúng ta cần biên dịch các thành phần mô hình bằng cách sử dụng SDK Neuron. SDK Neuron, bao gồm trình biên dịch deep learning, thời gian chạy và các công cụ, biên dịch và tự động tối ưu hóa các mô hình deep learning để chúng có thể chạy hiệu quả trên các phiên bản Inf2 và trích xuất toàn bộ hiệu năng của bộ tăng tốc AWS Inferentia2. Chúng tôi có sẵn các ví dụ cho mô hình Khuếch tán ổn định 2.1 trên Repo GitHub. Sổ tay này trình bày một ví dụ chi tiết về cách biên dịch mô hình Khuếch tán ổn định, lưu các mô hình Neuron đã biên dịch và tải nó vào thời gian chạy để suy luận.

Chúng tôi sử dụng StableDiffusionPipeline từ khuôn mặt ôm diffusers thư viện để tải và biên dịch mô hình. Sau đó, chúng tôi biên dịch tất cả các thành phần của mô hình cho Neuron bằng cách sử dụng torch_neuronx.trace() và lưu mô hình được tối ưu hóa dưới dạng TorchScript. Quá trình biên dịch có thể tốn khá nhiều bộ nhớ, đòi hỏi một lượng RAM đáng kể. Để tránh điều này, trước khi truy tìm từng mô hình, chúng tôi tạo một deepcopy của phần đường ống đang được truy tìm. Theo đó, chúng tôi xóa đối tượng đường ống khỏi bộ nhớ bằng cách sử dụng del pipe. Kỹ thuật này đặc biệt hữu ích khi biên dịch trên các phiên bản có RAM thấp.

Ngoài ra, chúng tôi cũng thực hiện tối ưu hóa các mô hình Khuếch tán ổn định. UNet nắm giữ khía cạnh tính toán chuyên sâu nhất của suy luận. Thành phần UNet hoạt động trên các tensor đầu vào có kích thước lô là hai, tạo ra một tensor đầu ra tương ứng cũng có kích thước lô là hai, để tạo ra một hình ảnh duy nhất. Các phần tử trong các lô này hoàn toàn độc lập với nhau. Chúng ta có thể tận dụng hành vi này để có được độ trễ tối ưu bằng cách chạy một đợt trên mỗi lõi Neuron. Chúng tôi biên dịch UNet cho một lô (bằng cách sử dụng các tensor đầu vào với một lô), sau đó sử dụng torch_neuronx.DataParallel API để tải mô hình lô đơn này lên từng lõi. Đầu ra của API này là một mô-đun hai lô liền mạch: chúng ta có thể chuyển tới UNet đầu vào của hai lô và đầu ra hai lô được trả về, nhưng bên trong, hai mô hình một lô đang chạy trên hai lõi Neuron . Chiến lược này tối ưu hóa việc sử dụng tài nguyên và giảm độ trễ.

Biên dịch và triển khai mô hình Khuếch tán ổn định trên phiên bản Inf2 EC2

Để biên dịch và triển khai mô hình Khuếch tán ổn định trên phiên bản Inf2 EC2, hãy đăng nhập vào Bảng điều khiển quản lý AWS và tạo một phiên bản inf2.8xlarge. Lưu ý rằng phiên bản inf2.8xlarge chỉ được yêu cầu để biên dịch mô hình vì quá trình biên dịch yêu cầu bộ nhớ máy chủ cao hơn. Mô hình Khuếch tán ổn định có thể được lưu trữ trên phiên bản inf2.xlarge. Bạn có thể tìm thấy AMI mới nhất với các thư viện Neuron bằng cách sử dụng thông tin sau Giao diện dòng lệnh AWS (AWS CLI) lệnh:

aws ec2 describe-images --region us-east-1 --owners amazon --filters 'Name=name,Values=Deep Learning AMI Neuron PyTorch 1.13.? (Amazon Linux 2) ????????' 'Name=state,Values=available' --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' --output text

Trong ví dụ này, chúng tôi đã tạo một phiên bản EC2 bằng cách sử dụng Deep Learning AMI Neuron PyTorch 1.13 (Ubuntu 20.04). Sau đó, bạn có thể tạo môi trường lab JupyterLab bằng cách kết nối với phiên bản và chạy các bước sau:

run source /opt/aws_neuron_venv_pytorch/bin/activate
pip install jupyterlab
jupyter-lab

Một cuốn sổ ghi chép với tất cả các bước để biên dịch và lưu trữ mô hình được đặt trên GitHub.

Hãy xem các bước biên dịch cho một trong các khối bộ mã hóa văn bản. Các khối khác là một phần của đường truyền Khuếch tán ổn định có thể được biên dịch tương tự.

Bước đầu tiên là tải mô hình được đào tạo trước từ Ôm mặt. Các StableDiffusionPipeline.from_pretrained phương thức tải mô hình được đào tạo trước vào đối tượng đường dẫn của chúng tôi, pipe. Sau đó chúng tôi tạo ra một deepcopy của bộ mã hóa văn bản từ hệ thống của chúng tôi, sao chép nó một cách hiệu quả. Các del pipe lệnh sau đó được sử dụng để xóa đối tượng đường ống ban đầu, giải phóng bộ nhớ đã được nó sử dụng. Ở đây, chúng tôi đang lượng tử hóa mô hình thành các trọng số BF16:

model_id = "stabilityai/stable-diffusion-2-1-base"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
text_encoder = copy.deepcopy(pipe.text_encoder)
del pipe

Bước này bao gồm việc gói bộ mã hóa văn bản của chúng ta bằng NeuronTextEncoder vỏ bánh. Đầu ra của mô-đun bộ mã hóa văn bản được biên dịch sẽ có dạng dict. Chúng tôi chuyển đổi nó thành một list gõ bằng cách sử dụng trình bao bọc này:

text_encoder = NeuronTextEncoder(text_encoder)

Chúng tôi khởi tạo tensor PyTorch emb với một số giá trị. Các emb tensor được sử dụng làm đầu vào ví dụ cho torch_neuronx.trace chức năng. Hàm này theo dõi bộ mã hóa văn bản của chúng tôi và biên dịch nó thành định dạng được tối ưu hóa cho Neuron. Đường dẫn thư mục cho mô hình đã biên dịch được xây dựng bằng cách nối COMPILER_WORKDIR_ROOT với thư mục con text_encoder:

emb = torch.tensor([...])
text_encoder_neuron = torch_neuronx.trace(
        text_encoder.neuron_text_encoder,
        emb,
        compiler_workdir=os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder'),
        )

Bộ mã hóa văn bản đã biên dịch được lưu bằng cách sử dụng torch.jit.save. Nó được lưu trữ dưới tên tệp model.pt trong text_encoder thư mục không gian làm việc của trình biên dịch của chúng tôi:

text_encoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder/model.pt')
torch.jit.save(text_encoder_neuron, text_encoder_filename)

Sản phẩm máy tính xách tay bao gồm các bước tương tự để biên dịch các thành phần khác của mô hình: UNet, bộ giải mã VAE và VAE post_quant_conv. Sau khi biên dịch tất cả các mô hình, bạn có thể tải và chạy mô hình theo các bước sau:

  1. Xác định đường dẫn cho các mô hình được biên dịch.
  2. Tải một tập tin được đào tạo trước StableDiffusionPipeline model, với cấu hình được chỉ định để sử dụng kiểu dữ liệu bfloat16.
  3. Tải mô hình UNet lên hai lõi Neuron bằng cách sử dụng torch_neuronx.DataParallel API. Điều này cho phép thực hiện suy luận song song dữ liệu, có thể tăng tốc đáng kể hiệu suất của mô hình.
  4. Tải các phần còn lại của mô hình (text_encoder, decoderpost_quant_conv) trên một lõi Neuron.

Sau đó, bạn có thể chạy quy trình bằng cách cung cấp văn bản đầu vào dưới dạng lời nhắc. Sau đây là một số hình ảnh do mô hình tạo ra cho lời nhắc:

  • Chân dung Renaud Sechan, bút và mực, những nét vẽ phức tạp, của Craig Mullins, Ruan Jia, Kentaro Miura, Greg Rutkowski, loundraw

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

  • Chân dung người thợ mỏ già ở thế kỷ 19, bức tranh đẹp, với nét vẽ mặt rất chi tiết của Greg rutkowski

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

  • Một lâu đài giữa rừng

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Lưu trữ Khuếch tán ổn định 2.1 trên AWS Inferentia2 và SageMaker

Lưu trữ các mô hình Khuếch tán ổn định bằng SageMaker cũng yêu cầu biên dịch bằng SDK Neuron. Bạn có thể hoàn thành quá trình biên dịch trước thời hạn hoặc trong thời gian chạy bằng cách sử dụng vùng chứa Suy luận mô hình lớn (LMI). Biên dịch trước thời hạn cho phép thời gian tải mô hình nhanh hơn và là tùy chọn ưu tiên.

Bộ chứa SageMaker LMI cung cấp hai cách để triển khai mô hình:

  • Tùy chọn không có mã trong đó chúng tôi chỉ cung cấp serving.properties tập tin với các cấu hình cần thiết
  • Mang theo kịch bản suy luận của riêng bạn

Chúng tôi xem xét cả hai giải pháp và xem xét các cấu hình cũng như tập lệnh suy luận (model.py). Trong bài đăng này, chúng tôi trình bày việc triển khai bằng mô hình được biên dịch trước được lưu trữ trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Bạn có thể sử dụng mô hình được biên dịch trước này cho việc triển khai của mình.

Định cấu hình mô hình bằng tập lệnh được cung cấp

Trong phần này, chúng tôi trình bày cách định cấu hình bộ chứa LMI để lưu trữ các mô hình Khuếch tán ổn định. Máy tính xách tay SD2.1 có sẵn trên GitHub. Bước đầu tiên là tạo gói cấu hình mô hình theo cấu trúc thư mục sau. Mục đích của chúng tôi là sử dụng các cấu hình mô hình tối thiểu cần thiết để lưu trữ mô hình. Cấu trúc thư mục cần thiết như sau:

<config-root-directory> / 
    ├── serving.properties
    │   
    └── model.py [OPTIONAL]

Tiếp theo, chúng tôi tạo phục vụ.properties tập tin với các thông số sau:

%%writefile code_sd/serving.properties
engine=Python
option.entryPoint=djl_python.transformers-neuronx
option.use_stable_diffusion=True
option.model_id=s3url
option.tensor_parallel_degree=2
option.dtype=bf16

Các thông số xác định như sau:

  • tùy chọn.model_id – Các thùng chứa LMI sử dụng s5cmd để tải mô hình từ vị trí S3 và do đó chúng ta cần chỉ định vị trí chứa các trọng số được biên dịch của chúng ta.
  • tùy chọn.entryPoint – Để sử dụng các trình xử lý tích hợp, chúng ta chỉ định lớp Transforms-neuronx. Nếu có tập lệnh suy luận tùy chỉnh, bạn cần cung cấp tập lệnh đó để thay thế.
  • tùy chọn.dtype – Điều này quy định việc tải trọng lượng theo một kích thước cụ thể. Đối với bài đăng này, chúng tôi sử dụng BF16, điều này làm giảm hơn nữa yêu cầu bộ nhớ của chúng tôi so với FP32 và do đó làm giảm độ trễ của chúng tôi.
  • tùy chọn.tensor_parallel_degree – Tham số này chỉ định số lượng máy gia tốc chúng tôi sử dụng cho mô hình này. Bộ tăng tốc chip AWS Inferentia2 có hai lõi Neuron và do đó, việc chỉ định giá trị 2 có nghĩa là chúng tôi sử dụng một bộ tăng tốc (hai lõi). Điều này có nghĩa là giờ đây chúng ta có thể tạo nhiều công nhân để tăng thông lượng của điểm cuối.
  • tùy chọn.engine – Điều này được đặt thành Python để cho biết chúng tôi sẽ không sử dụng các trình biên dịch khác như DeepSpeed ​​hoặc Faster Transformer cho dịch vụ lưu trữ này.

Mang theo kịch bản của riêng bạn

Nếu bạn muốn mang tập lệnh suy luận tùy chỉnh của riêng mình, bạn cần xóa option.entryPoint từ serving.properties. Bộ chứa LMI trong trường hợp đó sẽ tìm kiếm một model.py tập tin ở cùng vị trí với serving.properties và sử dụng nó để chạy suy luận.

Tạo tập lệnh suy luận của riêng bạn (model.py)

Việc tạo tập lệnh suy luận của riêng bạn tương đối đơn giản bằng cách sử dụng bộ chứa LMI. Thùng chứa yêu cầu của bạn model.py file để triển khai phương thức sau:

def handle(inputs: Input) which returns an object of type Outputs

Chúng ta hãy xem xét một số lĩnh vực quan trọng của sổ ghi chép kèm theo, điều này thể hiện chức năng mang tập lệnh của riêng bạn.

Thay thế cross_attention mô-đun với phiên bản được tối ưu hóa:

# Replace original cross-attention module with custom cross-attention module for better performance
    CrossAttention.get_attention_scores = get_attention_scores
Load the compiled weights for the following
text_encoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder.pt')
decoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'vae_decoder.pt')
unet_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'unet.pt')
post_quant_conv_filename =. os.path.join(COMPILER_WORKDIR_ROOT, 'vae_post_quant_conv.pt')

Đây là tên của tệp trọng số đã biên dịch mà chúng tôi đã sử dụng khi tạo các phần tổng hợp. Bạn có thể thoải mái thay đổi tên tệp nhưng hãy đảm bảo tên tệp trọng số của bạn khớp với tên bạn chỉ định ở đây.

Sau đó, chúng ta cần tải chúng bằng SDK Neuron và đặt chúng theo trọng số mô hình thực tế. Khi tải các trọng số được tối ưu hóa UNet, hãy lưu ý rằng chúng tôi cũng đang chỉ định số lượng lõi Neuron mà chúng tôi cần để tải chúng vào. Ở đây, chúng tôi tải lên một máy gia tốc đơn có hai lõi:

# Load the compiled UNet onto two neuron cores.
    pipe.unet = NeuronUNet(UNetWrap(pipe.unet))
    logging.info(f"Loading model: unet:created")
    device_ids = [idx for idx in range(tensor_parallel_degree)]
   
    pipe.unet.unetwrap = torch_neuronx.DataParallel(torch.jit.load(unet_filename), device_ids, set_dynamic_batching=False)
   
 
    # Load other compiled models onto a single neuron core.
 
    # - load encoders
    pipe.text_encoder = NeuronTextEncoder(pipe.text_encoder)
    clip_compiled = torch.jit.load(text_encoder_filename)
    pipe.text_encoder.neuron_text_encoder = clip_compiled
    #- load decoders
    pipe.vae.decoder = torch.jit.load(decoder_filename)
    pipe.vae.post_quant_conv = torch.jit.load(post_quant_conv_filename)

Chạy suy luận với dấu nhắc sẽ gọi đối tượng ống để tạo ra hình ảnh.

Tạo điểm cuối SageMaker

Chúng tôi sử dụng API Boto3 để tạo điểm cuối SageMaker. Hoàn thành các bước sau:

  1. Tạo tarball chỉ với việc phục vụ và tùy chọn model.py các tập tin và tải nó lên Amazon S3.
  2. Tạo mô hình bằng cách sử dụng vùng chứa hình ảnh và tarball mô hình đã tải lên trước đó.
  3. Tạo cấu hình điểm cuối bằng các tham số chính sau:
    1. Sử dụng một ml.inf2.xlarge ví dụ.
    2. Thiết lập ContainerStartupHealthCheckTimeoutInSeconds đến 240 để đảm bảo quá trình kiểm tra tình trạng bắt đầu sau khi mô hình được triển khai.
    3. Thiết lập VolumeInGB thành giá trị lớn hơn để có thể sử dụng nó để tải trọng lượng mô hình có kích thước 32 GB.

Tạo mô hình SageMaker

Sau khi bạn tạo tệp model.tar.gz và tải tệp đó lên Amazon S3, chúng ta cần tạo mô hình SageMaker. Chúng tôi sử dụng bộ chứa LMI và tạo phẩm mô hình từ bước trước để tạo mô hình SageMaker. SageMaker cho phép chúng tôi tùy chỉnh và đưa vào các biến môi trường khác nhau. Đối với quy trình làm việc này, chúng ta có thể để mọi thứ như mặc định. Xem đoạn mã sau:

inference_image_uri = (
    f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0 djl-serving-inf2"
)

Tạo đối tượng mô hình, về cơ bản là tạo một thùng chứa khóa được tải vào phiên bản và được sử dụng để suy luận:

model_name = name_from_base(f"inf2-sd")
create_model_response = boto3_sm_client.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    PrimaryContainer={"Image": inference_image_uri, "ModelDataUrl": s3_code_artifact},
)

Tạo điểm cuối SageMaker

Trong bản demo này, chúng tôi sử dụng phiên bản ml.inf2.xlarge. Chúng ta cần thiết lập VolumeSizeInGB các tham số để cung cấp dung lượng đĩa cần thiết để tải mô hình và trọng số. Tham số này có thể áp dụng cho các trường hợp hỗ trợ Cửa hàng đàn hồi Amazon (Amazon EBS) tệp đính kèm tập tin. Chúng ta có thể đặt thời gian chờ tải xuống mô hình và kiểm tra tình trạng khởi động vùng chứa ở giá trị cao hơn, điều này sẽ cung cấp đủ thời gian để vùng chứa kéo trọng số từ Amazon S3 và tải vào bộ tăng tốc AWS Inferentia2. Để biết thêm chi tiết, hãy tham khảo TạoEndpointConfig.

endpoint_config_response = boto3_sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1",
            "ModelName": model_name,
            "InstanceType": "ml.inf2.xlarge", # - 
            "InitialInstanceCount": 1,
            "ContainerStartupHealthCheckTimeoutInSeconds": 360, 
            "VolumeSizeInGB": 400
        },
    ],
)

Cuối cùng, chúng tôi tạo một điểm cuối SageMaker:

create_endpoint_response = boto3_sm_client.create_endpoint(
    EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)

Gọi điểm cuối mô hình

Đây là một mô hình tổng quát, vì vậy chúng tôi chuyển vào dấu nhắc mà mô hình sử dụng để tạo hình ảnh. Tải trọng có kiểu JSON:

response_model = boto3_sm_run_client.invoke_endpoint( EndpointName=endpoint_name,
    Body=json.dumps(
        {
            "prompt": "Mountain Landscape", 
            "parameters": {} # 
        }
    ), 
    ContentType="application/json",
)

Điểm chuẩn mô hình Khuếch tán ổn định trên Inf2

Chúng tôi đã chạy một số thử nghiệm để đánh giá mô hình Khuếch tán ổn định với loại dữ liệu BF 16 trên Inf2 và chúng tôi có thể rút ra các con số về độ trễ ngang bằng hoặc vượt quá một số công cụ tăng tốc khác cho Khuếch tán ổn định. Điều này, cùng với chi phí thấp hơn của chip AWS Inferentia2, khiến đây trở thành một đề xuất cực kỳ có giá trị.

Các số sau đây là từ mô hình Khuếch tán ổn định được triển khai trên phiên bản inf2.xl. Để biết thêm thông tin về chi phí, hãy tham khảo Phiên bản Amazon EC2 Inf2.

Mô hình Độ phân giải Loại dữ liệu Lặp lại Độ trễ P95 (ms) Chi phí theo yêu cầu của Inf2.xl mỗi giờ Inf2.xl (Chi phí cho mỗi hình ảnh)
Khuếch tán ổn định 1.5 512 × 512 bf16 50 2,427.4 $0.76 $0.0005125
Khuếch tán ổn định 1.5 768 × 768 bf16 50 8,235.9 $0.76 $0.0017387
Khuếch tán ổn định 1.5 512 × 512 bf16 30 1,456.5 $0.76 $0.0003075
Khuếch tán ổn định 1.5 768 × 768 bf16 30 4,941.6 $0.76 $0.0010432
Khuếch tán ổn định 2.1 512 × 512 bf16 50 1,976.9 $0.76 $0.0004174
Khuếch tán ổn định 2.1 768 × 768 bf16 50 6,836.3 $0.76 $0.0014432
Khuếch tán ổn định 2.1 512 × 512 bf16 30 1,186.2 $0.76 $0.0002504
Khuếch tán ổn định 2.1 768 × 768 bf16 30 4,101.8 $0.76 $0.0008659

Kết luận

Trong bài đăng này, chúng tôi đi sâu vào quá trình biên soạn, tối ưu hóa và triển khai mô hình Khuếch tán ổn định 2.1 bằng cách sử dụng phiên bản Inf2. Chúng tôi cũng đã trình diễn việc triển khai các mô hình Khuếch tán ổn định bằng SageMaker. Phiên bản Inf2 cũng mang lại hiệu quả về giá tuyệt vời cho Khuếch tán ổn định 1.5. Để tìm hiểu thêm về lý do tại sao phiên bản Inf2 lại phù hợp với AI tổng hợp và mô hình ngôn ngữ lớn, hãy tham khảo Phiên bản Amazon EC2 Inf2 dành cho suy luận AI tổng hợp hiệu suất cao, chi phí thấp hiện đã có sẵn rộng rãi. Để biết chi tiết hiệu suất, hãy tham khảo Hiệu suất Inf2. Xem thêm các ví dụ trên Repo GitHub.

Đặc biệt cảm ơn Matthew Mcclain, Beni Hegedus, Kamran Khan, Shruti Koparkar và Qing Lan vì đã xem xét và cung cấp những thông tin đầu vào có giá trị.


Về các tác giả

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Vivek Gangasani là Kiến trúc sư giải pháp máy học cao cấp tại Amazon Web Services. Anh làm việc với các công ty khởi nghiệp về máy học để xây dựng và triển khai các ứng dụng AI/ML trên AWS. Anh ấy hiện đang tập trung vào việc cung cấp các giải pháp cho MLOps, suy luận ML và ML mã thấp. Anh ấy đã làm việc cho các dự án trong các lĩnh vực khác nhau, bao gồm xử lý ngôn ngữ tự nhiên và thị giác máy tính.

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.KC Tùng là Kiến trúc sư giải pháp cấp cao tại AWS Annapurna Labs. Anh ấy chuyên về đào tạo và triển khai mô hình deep learning quy mô lớn trên đám mây. Anh ấy có bằng tiến sĩ. trong sinh lý học phân tử từ Trung tâm Y tế Tây Nam Đại học Texas ở Dallas. Anh ấy đã phát biểu tại AWS Summits và AWS Reinvent. Hiện tại, anh ấy giúp khách hàng đào tạo và triển khai các mô hình PyTorch và TensorFlow lớn trên đám mây AWS. Ông là tác giả của hai cuốn sách: Tìm hiểu doanh nghiệp TensorFlowTài liệu tham khảo bỏ túi TensorFlow 2.

Tối đa hóa hiệu suất Khuếch tán ổn định và giảm chi phí suy luận với AWS Inferentia2 | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Rupinder Grewal là Kiến trúc sư Giải pháp Chuyên gia Sr Ai / ML của AWS. Anh ấy hiện đang tập trung vào việc phục vụ người mẫu và MLOps trên SageMaker. Trước khi đảm nhiệm vai trò này, anh ấy đã từng làm việc với tư cách là Kỹ sư máy học xây dựng và lưu trữ các mô hình. Ngoài giờ làm việc, anh ấy thích chơi tennis và đạp xe trên những con đường mòn trên núi.

Dấu thời gian:

Thêm từ Học máy AWS