Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia

Công cụ tìm kiếm sản phẩm của Amazon lập chỉ mục hàng tỷ sản phẩm, phục vụ hàng trăm triệu khách hàng trên toàn thế giới và là một trong những dịch vụ được sử dụng nhiều nhất trên thế giới. Nhóm Tìm kiếm của Amazon phát triển công nghệ máy học (ML) hỗ trợ Amazon.com công cụ tìm kiếm và giúp khách hàng tìm kiếm dễ dàng. Để mang lại trải nghiệm tuyệt vời cho khách hàng và hoạt động ở quy mô lớn theo yêu cầu của Amazon.com công cụ tìm kiếm, nhóm này luôn tìm cách xây dựng các hệ thống tiết kiệm chi phí hơn với độ trễ thời gian thực và yêu cầu thông lượng. Nhóm liên tục khám phá phần cứng và trình biên dịch được tối ưu hóa cho việc học sâu để tăng tốc đào tạo và suy luận mô hình, đồng thời giảm chi phí hoạt động trên toàn diện.

Trong bài đăng này, chúng tôi mô tả cách Amazon Search sử dụng Suy luận AWS, mục đích của bộ tăng tốc hiệu suất cao do AWS xây dựng để tăng tốc khối lượng công việc suy luận học sâu. Nhóm chạy suy luận ML có độ trễ thấp với các mô hình NLP dựa trên Biến áp trên AWS Inferentia dựa trên Đám mây điện toán đàn hồi Amazon (Amazon EC2) Phiên bản Inf1 và tiết kiệm đến 85% chi phí cơ sở hạ tầng trong khi duy trì hiệu suất thông lượng và độ trễ mạnh mẽ.

Học sâu để dự đoán mục đích trùng lặp và truy vấn

Tìm kiếm trên Amazon Marketplace là một bài toán đa tác vụ, đa phương thức, xử lý một số đầu vào như ASIN (Số nhận dạng tiêu chuẩn của Amazon, một số gồm 10 chữ và số nhận dạng duy nhất sản phẩm), hình ảnh sản phẩm, mô tả văn bản và truy vấn. Để tạo trải nghiệm người dùng phù hợp, các dự đoán từ nhiều mô hình được sử dụng cho các khía cạnh khác nhau của tìm kiếm. Đây là một thách thức vì hệ thống tìm kiếm có hàng nghìn mô hình với hàng chục nghìn giao dịch mỗi giây (TPS) ở mức tải cao điểm. Chúng tôi tập trung vào hai thành phần của trải nghiệm đó:

  • Dự đoán trùng lặp do khách hàng cảm nhận - Để hiển thị danh sách các sản phẩm có liên quan nhất phù hợp với truy vấn của người dùng, điều quan trọng là phải xác định các sản phẩm mà khách hàng khó phân biệt
  • Dự đoán mục đích truy vấn - Để điều chỉnh trang tìm kiếm và bố cục sản phẩm cho phù hợp hơn với những gì khách hàng đang tìm kiếm, điều quan trọng là phải dự đoán mục đích và loại truy vấn của người dùng (ví dụ: truy vấn liên quan đến phương tiện, truy vấn trợ giúp và các loại truy vấn khác)

Cả hai dự đoán này đều được thực hiện bằng cách sử dụng kiến ​​trúc mô hình Transformer, cụ thể là các mô hình dựa trên BERT. Trên thực tế, cả hai đều chia sẻ cùng một mô hình dựa trên BERT làm cơ sở, và mỗi mô hình xếp chồng một đầu phân loại / hồi quy trên đầu xương sống này.

Dự đoán trùng lặp có các tính năng văn bản khác nhau cho một cặp sản phẩm được đánh giá làm đầu vào (chẳng hạn như loại sản phẩm, tiêu đề, mô tả, v.v.) và được tính toán định kỳ cho các tập dữ liệu lớn. Mô hình này được đào tạo từ đầu đến cuối theo kiểu đa nhiệm. Amazon SageMaker Xử lý công việc được sử dụng để chạy các khối lượng công việc hàng loạt này theo định kỳ để tự động khởi chạy chúng và chỉ trả tiền cho thời gian xử lý được sử dụng. Đối với trường hợp sử dụng khối lượng công việc hàng loạt này, yêu cầu đối với thông lượng suy luận là 8,800 TPS tổng.

Dự đoán có mục đích lấy truy vấn văn bản của người dùng làm đầu vào và cần thiết trong thời gian thực để phục vụ động lưu lượng truy cập hàng ngày và nâng cao trải nghiệm người dùng trên Amazon Marketplace. Mô hình được đào tạo trên một mục tiêu phân loại nhiều lớp. Mô hình này sau đó được triển khai trên Dịch vụ container đàn hồi Amazon (Amazon ECS), cho phép mở rộng quy mô tự động nhanh chóng và định nghĩa và quản lý triển khai dễ dàng. Vì đây là trường hợp sử dụng thời gian thực nên P99 yêu cầu độ trễ phải dưới 10 mili giây để đảm bảo trải nghiệm người dùng thú vị.

AWS Inferentia và AWS Neuron SDK

Phiên bản EC2 Inf1 được cung cấp bởi AWS Inferentia, mục đích của bộ tăng tốc ML đầu tiên được AWS xây dựng để tăng tốc khối lượng công việc suy luận học sâu. Các phiên bản Inf1 mang lại thông lượng cao hơn tới 2.3 lần và chi phí cho mỗi suy luận thấp hơn tới 70% so với các phiên bản EC2 dựa trên GPU tương đương. Bạn có thể tiếp tục đào tạo các mô hình của mình bằng cách sử dụng khuôn khổ mà bạn lựa chọn (PyTorch, TensorFlow, MXNet) và sau đó dễ dàng triển khai chúng trên AWS Inferentia để hưởng lợi từ các tối ưu hóa hiệu suất được tích hợp sẵn. Bạn có thể triển khai nhiều loại mô hình bằng cách sử dụng các phiên bản Inf1, từ nhận dạng hình ảnh, phát hiện đối tượng, xử lý ngôn ngữ tự nhiên (NLP) và các mô hình đề xuất hiện đại.

Tế bào thần kinh AWS là một bộ công cụ phát triển phần mềm (SDK) bao gồm một trình biên dịch, thời gian chạy và các công cụ cấu hình giúp tối ưu hóa hiệu suất suy luận ML của các phiên bản EC2 Inf1. Neuron được tích hợp nguyên bản với các khuôn khổ ML phổ biến như TensorFlow và PyTorch. Do đó, bạn có thể triển khai các mô hình học sâu trên AWS Inferentia với cùng các API quen thuộc được cung cấp bởi khuôn khổ lựa chọn của bạn và hưởng lợi từ việc tăng hiệu suất và chi phí mỗi suy luận thấp nhất trên đám mây.

Kể từ khi ra mắt, Neuron SDK đã tiếp tục tăng cường độ rộng của các mô hình mà nó hỗ trợ trong khi tiếp tục cải thiện hiệu suất và giảm chi phí suy luận. Điều này bao gồm mô hình NLP (BERT), mô hình phân loại hình ảnh (ResNet, VGG) và mô hình phát hiện đối tượng (OpenPose và SSD).

Triển khai trên các phiên bản Inf1 để có độ trễ thấp, thông lượng cao và tiết kiệm chi phí

Nhóm Tìm kiếm của Amazon muốn tiết kiệm chi phí trong khi đáp ứng yêu cầu thông lượng cao của họ về dự đoán trùng lặp và yêu cầu về độ trễ thấp đối với dự đoán mục đích truy vấn. Họ đã chọn triển khai trên các phiên bản Inf1 dựa trên AWS Inferentia và không chỉ đáp ứng các yêu cầu về hiệu suất cao mà còn tiết kiệm tới 85% chi phí suy luận.

Dự đoán trùng lặp do khách hàng cảm nhận

Trước khi sử dụng Inf1, một Amazon EMR cụm đang chạy bằng cách sử dụng các phiên bản dựa trên CPU. Không phụ thuộc vào khả năng tăng tốc phần cứng, một số lượng lớn các phiên bản là cần thiết để đáp ứng yêu cầu thông lượng cao là 8,800 tổng số giao dịch mỗi giây. Nhóm đã chuyển sang các phiên bản inf1.6xlarge, mỗi phiên bản có 4 bộ tăng tốc AWS Inferentia và 16 NeuronCores (4 lõi trên mỗi chip AWS Inferentia). Họ đã truy tìm mô hình dựa trên Transformer cho một NeuronCore duy nhất và tải một chế độ cho mỗi NeuronCore để tối đa hóa thông lượng. Bằng cách tận dụng 16 NeuronCores có sẵn, họ đã giảm 85% chi phí suy luận (dựa trên giá công khai hiện tại của Amazon EC2 theo yêu cầu).

Dự đoán mục đích truy vấn

Với yêu cầu độ trễ P99 là 10 mili giây hoặc ít hơn, nhóm đã tải mô hình vào mọi NeuronCore có sẵn trên các phiên bản inf1.6xlarge. Bạn có thể dễ dàng làm điều này với PyTorch Neuron bằng cách sử dụng ngọn đuốc.neuron.DataParallel API. Với việc triển khai Inf1, độ trễ của mô hình là 3 mili giây, độ trễ đầu cuối khoảng 10 mili giây và thông lượng tối đa ở tải cao nhất đạt 16,000 TPS.

Bắt đầu với mã triển khai và biên dịch mẫu

Sau đây là một số mã mẫu để giúp bạn bắt đầu với các phiên bản Inf1 và nhận ra lợi ích về hiệu suất và chi phí như nhóm Tìm kiếm của Amazon. Chúng tôi chỉ ra cách biên dịch và thực hiện suy luận với mô hình PyTorch, sử dụng Thần kinh PyTorch.

Đầu tiên, mô hình được biên dịch với torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

Để có danh sách đầy đủ các đối số có thể có cho trace phương pháp, tham khảo API Python theo dõi PyTorch-Neuron. Bạn có thể thấy, đối số trình biên dịch có thể được truyền cho torch.neuron API trực tiếp. Tất cả các toán tử FP32 được chuyển thành BF16 with --fp32-cast=all, mang lại hiệu suất cao nhất trong khi vẫn duy trì dải động. Có nhiều tùy chọn đúc hơn để cho phép bạn kiểm soát hiệu suất để mô hình hóa sự cân bằng chính xác. Các mô hình được sử dụng cho cả hai trường hợp sử dụng được biên dịch cho một NeuronCore duy nhất (không đường ống).

Sau đó, chúng tôi tải mô hình trên Inferentia với torch.jit.load, và sử dụng nó để dự đoán. Các Thời gian chạy nơron tự động tải mô hình vào NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Kết luận

Nhóm Tìm kiếm của Amazon đã có thể giảm 85% chi phí suy luận của họ bằng cách sử dụng các phiên bản Inf1 dựa trên AWS Inferentia, trong điều kiện lưu lượng truy cập lớn và các yêu cầu về hiệu suất khắt khe. AWS Inferentia và Neuron SDK cung cấp cho nhóm sự linh hoạt để tối ưu hóa quá trình triển khai tách biệt với đào tạo và đưa ra đường cong học tập nông cạn thông qua các công cụ hoàn thiện và các API khung quen thuộc.

Bạn có thể mở khóa lợi ích về hiệu suất và chi phí bằng cách bắt đầu với mã mẫu được cung cấp trong bài đăng này. Ngoài ra, hãy kiểm tra từ đầu đến cuối hướng dẫn để chạy các mô hình ML trên Inferentia với Kim tự thápTensorFlow.


Giới thiệu về tác giả

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.João Moura là một Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Ông chủ yếu tập trung vào các trường hợp sử dụng NLP và giúp khách hàng tối ưu hóa việc đào tạo và triển khai mô hình học sâu. Ông cũng là người tích cực đề xuất phần cứng chuyên dụng ML và các giải pháp ML mã thấp.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Trương Vệ Kiện là Giám đốc Kỹ thuật Phần mềm tại Search M5, nơi ông làm việc về sản xuất các mô hình quy mô lớn cho các ứng dụng máy học của Amazon. Sở thích của anh ấy bao gồm truy xuất thông tin và cơ sở hạ tầng máy học.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Jason Carlson là Kỹ sư phần mềm để phát triển các đường ống học máy để giúp giảm số lần hiển thị tìm kiếm bị đánh cắp do các bản sao do khách hàng nhận thấy. Anh ấy chủ yếu làm việc với Apache Spark, AWS và PyTorch để giúp triển khai và cung cấp / xử lý dữ liệu cho các mô hình ML. Khi rảnh rỗi, anh ấy thích đọc sách và chạy bộ.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Thiếu Huệ Tây là một SDE tại nhóm Tìm hiểu Truy vấn Tìm kiếm Infra. Ông dẫn đầu nỗ lực xây dựng các dịch vụ suy luận trực tuyến học sâu quy mô lớn với độ trễ thấp và tính sẵn sàng cao. Ngoài giờ làm việc, anh ấy thích trượt tuyết và khám phá những món ăn ngon.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Trác Kỳ Trương là Kỹ sư phát triển phần mềm tại nhóm Tìm hiểu Truy vấn Tìm kiếm Infra. Anh ấy làm việc trên việc xây dựng các khuôn khổ phục vụ mô hình để cải thiện độ trễ và thông lượng cho các dịch vụ suy luận trực tuyến học sâu. Ngoài giờ làm việc, anh ấy thích chơi bóng rổ, trượt tuyết và lái xe.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.mặt trời haowei là một kỹ sư phần mềm trong nhóm Tìm hiểu Truy vấn Tìm kiếm Infra. Cô ấy làm việc về thiết kế các API và cơ sở hạ tầng hỗ trợ các dịch vụ suy luận trực tuyến học sâu. Sở thích của cô ấy bao gồm thiết kế API dịch vụ, thiết lập cơ sở hạ tầng và bảo trì. Ngoài công việc, cô ấy thích chạy, đi bộ đường dài và đi du lịch.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Jaspreet Singh là một Nhà Khoa học Ứng dụng trong nhóm M5, nơi anh ấy làm việc trên các mô hình nền tảng quy mô lớn để cải thiện trải nghiệm mua sắm của khách hàng. Các mối quan tâm nghiên cứu của anh ấy bao gồm học tập đa nhiệm vụ, truy xuất thông tin và học đại diện.

Cách Amazon Search giảm 85% chi phí suy luận ML với AWS Inferentia PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Shruti Koparkar là Giám đốc Tiếp thị Sản phẩm Cấp cao tại AWS. Cô ấy giúp khách hàng khám phá, đánh giá và áp dụng cơ sở hạ tầng điện toán tăng tốc EC2 cho nhu cầu học máy của họ.

Dấu thời gian:

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