Logo Zephyrnet

Đổi mới để hòa nhập: Hack.The.Bias với Amazon SageMaker | Dịch vụ web của Amazon

Ngày:

Bài đăng này được đồng tác giả với Daniele Chiappalupi, người tham gia nhóm Hackathon sinh viên AWS tại ETH Zürich.

Mọi người đều có thể dễ dàng bắt đầu học máy (ML) bằng cách sử dụng Khởi động Amazon SageMaker. Trong bài đăng này, chúng tôi sẽ cho bạn thấy cách nhóm Hackathon của trường đại học sử dụng SageMaker JumpStart để nhanh chóng xây dựng một ứng dụng giúp người dùng xác định và loại bỏ những thành kiến.

“Amazon SageMaker đóng vai trò quan trọng trong dự án của chúng tôi. Nó giúp dễ dàng triển khai và quản lý phiên bản Flan được đào tạo trước, cung cấp cho chúng tôi nền tảng vững chắc cho ứng dụng của mình. Tính năng tự động mở rộng quy mô của nó tỏ ra rất quan trọng trong thời gian lưu lượng truy cập cao, đảm bảo rằng ứng dụng của chúng tôi vẫn phản hồi nhanh và người dùng nhận được phân tích sai lệch ổn định và nhanh chóng. Hơn nữa, bằng cách cho phép chúng tôi giảm tải nhiệm vụ nặng nề là truy vấn mô hình Flan sang một dịch vụ được quản lý, chúng tôi có thể giữ cho ứng dụng của mình gọn nhẹ và nhanh chóng, nâng cao trải nghiệm người dùng trên nhiều thiết bị khác nhau. Các tính năng của SageMaker cho phép chúng tôi tối đa hóa thời gian tham gia hackathon, cho phép chúng tôi tập trung vào việc tối ưu hóa lời nhắc và ứng dụng thay vì quản lý hiệu suất và cơ sở hạ tầng của mô hình.”

– Daniele Chiappalupi, người tham gia nhóm Hackathon sinh viên AWS tại ETH Zürich. 

Tổng quan về giải pháp

Chủ đề của Hackathon là đóng góp cho các mục tiêu bền vững của Liên hợp quốc bằng công nghệ AI. Như được hiển thị trong hình dưới đây, ứng dụng được xây dựng tại Hackathon góp phần thực hiện ba Mục tiêu Phát triển Bền vững (giáo dục chất lượng, nhắm mục tiêu phân biệt đối xử dựa trên giới tính và giảm bất bình đẳng) bằng cách giúp người dùng xác định và xóa thành kiến ​​khỏi văn bản của họ nhằm thúc đẩy sự công bằng và ngôn ngữ bao hàm.

Như được hiển thị trong ảnh chụp màn hình sau, sau khi bạn cung cấp văn bản, ứng dụng sẽ tạo ra một phiên bản mới không có thành kiến ​​​​về chủng tộc, sắc tộc và giới tính. Ngoài ra, nó làm nổi bật các phần cụ thể của văn bản đầu vào của bạn liên quan đến từng danh mục sai lệch.

Trong kiến ​​trúc được hiển thị trong sơ đồ sau, người dùng nhập văn bản vào Phản ứngứng dụng web dựa trên, sẽ kích hoạt Cổng API Amazon, từ đó gọi ra một AWS Lambda chức năng tùy thuộc vào độ lệch trong văn bản của người dùng. Hàm Lambda gọi điểm cuối mô hình Flan trong SageMaker JumpStart, trả về kết quả văn bản không thiên vị thông qua cùng một tuyến quay lại ứng dụng giao diện người dùng.

Quá trình phát triển ứng dụng

Quá trình phát triển ứng dụng này được lặp đi lặp lại và tập trung vào hai lĩnh vực chính: giao diện người dùng và tích hợp mô hình ML.

Chúng tôi đã chọn React để phát triển front-end do tính linh hoạt, khả năng mở rộng và các công cụ mạnh mẽ để tạo giao diện người dùng tương tác. Do tính chất ứng dụng của chúng tôi—xử lý thông tin đầu vào của người dùng và trình bày các kết quả tinh tế—kiến trúc dựa trên thành phần của React tỏ ra lý tưởng. Với React, chúng tôi có thể xây dựng một ứng dụng một trang một cách hiệu quả cho phép người dùng gửi văn bản và xem kết quả không thiên vị mà không cần phải làm mới trang liên tục.

Văn bản do người dùng nhập cần phải được xử lý bằng mô hình ngôn ngữ mạnh mẽ để xem xét kỹ lưỡng các thành kiến. Chúng tôi chọn Flan vì tính mạnh mẽ, hiệu quả và khả năng mở rộng của nó. Để sử dụng Flan, chúng tôi đã sử dụng SageMaker JumpStart, như trong ảnh chụp màn hình sau. Amazon SageMaker giúp việc triển khai và quản lý phiên bản Flan được đào tạo trước trở nên dễ dàng, cho phép chúng tôi tập trung vào việc tối ưu hóa lời nhắc và truy vấn thay vì quản lý hiệu suất và cơ sở hạ tầng của mô hình.

Việc kết nối mô hình Flan với ứng dụng giao diện người dùng của chúng tôi yêu cầu tích hợp mạnh mẽ và an toàn, điều này đạt được nhờ sử dụng Lambda và API Gateway. Với Lambda, chúng tôi đã tạo ra một hàm serverless giao tiếp trực tiếp với mô hình SageMaker của mình. Sau đó, chúng tôi đã sử dụng API Gateway để tạo điểm cuối an toàn, có thể mở rộng và có thể truy cập dễ dàng cho ứng dụng React của mình để gọi hàm Lambda. Khi người dùng gửi văn bản, ứng dụng sẽ kích hoạt một loạt lệnh gọi API đến cổng—trước tiên là để xác định xem có bất kỳ thành kiến ​​nào hay không, sau đó, nếu cần, sẽ có các truy vấn bổ sung để xác định, định vị và vô hiệu hóa thành kiến. Tất cả các yêu cầu này được chuyển qua hàm Lambda rồi đến mô hình SageMaker của chúng tôi.

Nhiệm vụ cuối cùng của chúng tôi trong quá trình phát triển là lựa chọn các lời nhắc để truy vấn mô hình ngôn ngữ. Ở đây, tập dữ liệu CrowS-Pairs đóng một vai trò quan trọng vì nó cung cấp cho chúng tôi các ví dụ thực tế về văn bản sai lệch mà chúng tôi đã sử dụng để tinh chỉnh các yêu cầu của mình. Chúng tôi đã chọn các lời nhắc bằng một quy trình lặp đi lặp lại, với mục tiêu tối đa hóa độ chính xác trong việc phát hiện sai lệch trong tập dữ liệu này.

Kết thúc quá trình, chúng tôi quan sát thấy một quy trình vận hành liền mạch trong ứng dụng đã hoàn thiện. Quá trình bắt đầu bằng việc người dùng gửi văn bản để phân tích, sau đó văn bản này sẽ được gửi qua yêu cầu POST tới điểm cuối Cổng API an toàn của chúng tôi. Thao tác này sẽ kích hoạt hàm Lambda, chức năng này giao tiếp với điểm cuối SageMaker. Do đó, mô hình Flan nhận được một loạt truy vấn. Bước đầu tiên kiểm tra sự hiện diện của bất kỳ thành kiến ​​nào trong văn bản. Nếu phát hiện sai lệch, các truy vấn bổ sung sẽ được triển khai để xác định vị trí, xác định và vô hiệu hóa các yếu tố sai lệch này. Sau đó, kết quả được trả về theo cùng một đường dẫn—đầu tiên đến hàm Lambda, sau đó qua Cổng API và cuối cùng quay lại người dùng. Nếu có bất kỳ thành kiến ​​nào trong văn bản gốc, người dùng sẽ nhận được phân tích toàn diện cho biết loại thành kiến ​​được phát hiện, cho dù là chủng tộc, dân tộc hay giới tính. Các phần cụ thể của văn bản nơi tìm thấy những thành kiến ​​này sẽ được đánh dấu, giúp người dùng có cái nhìn rõ ràng về những thay đổi đã thực hiện. Cùng với phân tích này, một phiên bản mới, không thiên vị của văn bản của họ cũng được trình bày, chuyển đổi một cách hiệu quả những thông tin đầu vào có khả năng thiên vị thành một câu chuyện mang tính bao quát hơn.

Trong các phần sau, chúng tôi trình bày chi tiết các bước để triển khai giải pháp này.

Thiết lập môi trường React

Chúng tôi bắt đầu bằng việc thiết lập môi trường phát triển cho React. Để khởi động một ứng dụng React mới với cấu hình tối thiểu, chúng tôi đã sử dụng ứng dụng tạo phản ứng:

npx create-react-app my-app

Xây dựng giao diện người dùng

Bằng cách sử dụng React, chúng tôi đã thiết kế một giao diện đơn giản để người dùng nhập văn bản, với nút gửi, nút đặt lại và hiển thị lớp phủ để trình bày kết quả đã xử lý khi chúng có sẵn.

Khởi tạo mô hình Flan trên SageMaker

Chúng tôi đã sử dụng SageMaker để tạo một phiên bản được đào tạo trước của mô hình ngôn ngữ Flan với điểm cuối để suy luận theo thời gian thực. Mô hình này có thể được sử dụng cho bất kỳ tải trọng có cấu trúc JSON nào như sau:

payload = { text_inputs: "text_inputs", max_length: <max_length>, num_return_sequences: <num_return_sequences>, top_k: <top_k>, top_p: <top_p>, do_sample: <do_sample>, num_beams: <num_beams>, seed: <seed>, };

Tạo một hàm Lambda

Chúng tôi đã phát triển hàm Lambda tương tác trực tiếp với điểm cuối SageMaker của chúng tôi. Hàm này được thiết kế để nhận yêu cầu kèm theo văn bản của người dùng, chuyển tiếp yêu cầu đó đến điểm cuối SageMaker và trả về kết quả đã tinh chỉnh, như minh họa trong đoạn mã sau (ENDPOINT_NAME đã được thiết lập làm điểm cuối phiên bản SageMaker):

import os
import io
import boto3
import json
import csv # grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker') def lambda_handler(event, context): data = json.loads(json.dumps(event)) payload = json.dumps(data['data']).encode('utf-8') query_response = runtime.invoke_endpoint( EndpointName=ENDPOINT_NAME, ContentType='application/json', Body=payload) response_dict = json.loads(query_response['Body'].read()) return response_dict['generated_texts']

Thiết lập Cổng API

Chúng tôi đã định cấu hình API REST mới trong API Gateway và liên kết nó với hàm Lambda của chúng tôi. Kết nối này cho phép ứng dụng React của chúng tôi thực hiện các yêu cầu HTTP tới Cổng API, sau đó kích hoạt hàm Lambda.

Tích hợp ứng dụng React với API

Chúng tôi đã cập nhật ứng dụng React để thực hiện yêu cầu POST tới API Gateway khi nút gửi được nhấp vào, với nội dung yêu cầu là văn bản của người dùng. Mã JavaScript mà chúng tôi sử dụng để thực hiện lệnh gọi API như sau (REACT_APP_AWS_ENDPOINT tương ứng với điểm cuối API Gateway được liên kết với lệnh gọi Lambda):

const makeAWSApiCall = ( textInputs, maxLength, numReturnSequences, topK, topP, doSample, numBeams ) => { const axiosRequestUrl = `${process.env.REACT_APP_AWS_ENDPOINT}`; const requestData = { text_inputs: textInputs, max_length: maxLength, num_return_sequences: numReturnSequences, top_k: topK, top_p: topP, do_sample: doSample, num_beams: numBeams, seed: 8, }; return axios.post(axiosRequestUrl, { data: requestData }); };

Tối ưu hóa lựa chọn nhắc nhở

Để cải thiện độ chính xác của việc phát hiện sai lệch, chúng tôi đã thử nghiệm các lời nhắc khác nhau dựa trên tập dữ liệu CrowS-Pairs. Thông qua quá trình lặp đi lặp lại này, chúng tôi đã chọn những lời nhắc mang lại cho chúng tôi độ chính xác cao nhất.

Triển khai và thử nghiệm ứng dụng React trên Vercel

Sau khi xây dựng ứng dụng, chúng tôi đã triển khai nó trên Vercel để có thể truy cập công khai. Chúng tôi đã tiến hành thử nghiệm rộng rãi để đảm bảo ứng dụng hoạt động như mong đợi, từ giao diện người dùng đến phản hồi từ mô hình ngôn ngữ.

Các bước này đặt nền tảng cho việc tạo ứng dụng của chúng tôi để phân tích và loại bỏ sai lệch văn bản. Bất chấp sự phức tạp vốn có của quy trình, việc sử dụng các công cụ như SageMaker, Lambda và API Gateway đã hợp lý hóa quá trình phát triển, cho phép chúng tôi tập trung vào mục tiêu cốt lõi của dự án—xác định và loại bỏ các thành kiến ​​trong văn bản.

Kết luận

SageMaker JumpStart cung cấp một cách thuận tiện để khám phá các tính năng và khả năng của SageMaker. Nó cung cấp các giải pháp một bước được quản lý, sổ ghi chép mẫu và các mô hình được đào tạo trước có thể triển khai. Những tài nguyên này cho phép bạn nhanh chóng tìm hiểu và hiểu SageMaker. Ngoài ra, bạn có tùy chọn tinh chỉnh các mô hình và triển khai chúng theo nhu cầu cụ thể của mình. Quyền truy cập vào JumpStart có sẵn thông qua Xưởng sản xuất Amazon SageMaker hoặc lập trình bằng cách sử dụng API SageMaker.

Trong bài đăng này, bạn đã tìm hiểu cách một nhóm Hackathon sinh viên phát triển một giải pháp trong thời gian ngắn bằng cách sử dụng SageMaker JumpStart. Điều này cho thấy tiềm năng của AWS và SageMaker JumpStart trong việc cho phép phát triển và triển khai nhanh chóng các giải pháp AI tinh vi, ngay cả bởi các nhóm hoặc cá nhân nhỏ.

Để tìm hiểu thêm về cách sử dụng SageMaker JumpStart, hãy tham khảo Hướng dẫn tinh chỉnh FLAN T5 XL với Amazon SageMaker JumpstartNhắc Zero-shot cho mô hình nền tảng Flan-T5 trong Amazon SageMaker JumpStart.

Câu lạc bộ phân tích ETH đã tổ chức 'ETH Datathon', một cuộc thi hackathon AI/ML thu hút hơn 150 người tham gia từ ETH Zurich, Đại học Zurich và EPFL. Sự kiện này có các hội thảo do các nhà lãnh đạo trong ngành chủ trì, thử thách viết mã kéo dài 24 giờ và cơ hội kết nối có giá trị với các sinh viên và chuyên gia trong ngành. Xin chân thành cảm ơn nhóm ETH Hackathon: Daniele Chiappalupi, Athina Nisioti và Francesco Ignazio Re, cũng như các thành viên còn lại của nhóm tổ chức AWS: Alice Morano, Demir Catovic, Iana Peix, Jan Oliver Seidenfuss, Lars Nettemann và Markus Winterholer.

Nội dung và ý kiến ​​trong bài đăng này là của tác giả bên thứ ba và AWS không chịu trách nhiệm về nội dung hoặc tính chính xác của bài đăng này.


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

Trương Quân là Kiến trúc sư Giải pháp có trụ sở tại Zurich. Anh giúp khách hàng Thụy Sĩ xây dựng các giải pháp dựa trên đám mây để đạt được tiềm năng kinh doanh của họ. Anh có niềm đam mê về sự bền vững và cố gắng giải quyết những thách thức về tính bền vững hiện tại bằng công nghệ. Anh ấy cũng là một người rất hâm mộ quần vợt và rất thích chơi board game.

Mohan Gowda lãnh đạo nhóm Machine Learning tại AWS Thụy Sĩ. Anh chủ yếu làm việc với các khách hàng Ô tô để phát triển các giải pháp và nền tảng AI/ML cải tiến cho các phương tiện thế hệ tiếp theo. Trước khi làm việc với AWS, Mohan đã làm việc với một công ty Tư vấn Quản lý Toàn cầu tập trung vào Chiến lược & Phân tích. Niềm đam mê của anh nằm ở các phương tiện được kết nối và lái xe tự động.

Thực phẩmThias Egli là Trưởng phòng Giáo dục ở Thụy Sĩ. Anh ấy là một Trưởng nhóm nhiệt tình với nhiều kinh nghiệm trong phát triển kinh doanh, bán hàng và tiếp thị.

kemeng Zhang là một Kỹ sư ML có trụ sở tại Zurich. Cô giúp khách hàng toàn cầu thiết kế, phát triển và mở rộng quy mô các ứng dụng dựa trên ML để nâng cao khả năng kỹ thuật số của họ nhằm tăng doanh thu kinh doanh và giảm chi phí. Cô cũng rất đam mê tạo ra các ứng dụng lấy con người làm trung tâm bằng cách tận dụng kiến ​​thức từ khoa học hành vi. Cô ấy thích chơi các môn thể thao dưới nước và dắt chó đi dạo.

Daniele Chiappalupi là sinh viên mới tốt nghiệp từ ETH Zürich. Anh yêu thích mọi khía cạnh của công nghệ phần mềm, từ thiết kế đến triển khai và từ triển khai đến bảo trì. Anh ấy có niềm đam mê sâu sắc với AI và háo hức mong muốn khám phá, sử dụng và đóng góp vào những tiến bộ mới nhất trong lĩnh vực này. Khi rảnh rỗi, anh ấy thích trượt tuyết trong những tháng lạnh hơn và chơi bóng rổ khi thời tiết ấm lên.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img