Khi khách hàng tăng tốc quá trình di chuyển lên đám mây và chuyển đổi hoạt động kinh doanh của mình, một số người sẽ rơi vào tình huống phải quản lý hoạt động CNTT trong môi trường nhiều đám mây. Ví dụ: bạn có thể đã mua lại một công ty đang chạy trên một nhà cung cấp đám mây khác hoặc bạn có thể có khối lượng công việc tạo ra giá trị từ các khả năng độc đáo do AWS cung cấp. Một ví dụ khác là các nhà cung cấp phần mềm độc lập (ISV) cung cấp sản phẩm và dịch vụ của họ trên các nền tảng đám mây khác nhau để mang lại lợi ích cho khách hàng cuối của họ. Hoặc một tổ chức có thể đang hoạt động ở Khu vực không có nhà cung cấp đám mây chính và để đáp ứng các yêu cầu về chủ quyền dữ liệu hoặc nơi lưu trữ dữ liệu, họ có thể sử dụng nhà cung cấp đám mây thứ cấp.
Trong những tình huống này, khi bạn bắt đầu sử dụng công nghệ AI tổng quát, mô hình ngôn ngữ lớn (LLM) và máy học (ML) làm phần cốt lõi trong hoạt động kinh doanh của mình, bạn có thể đang tìm kiếm các tùy chọn để tận dụng lợi thế của AWS AI và ML các khả năng bên ngoài AWS trong môi trường nhiều đám mây. Ví dụ: bạn có thể muốn sử dụng Amazon SageMaker để xây dựng và huấn luyện mô hình ML hoặc sử dụng Khởi động Amazon SageMaker để triển khai nền tảng dựng sẵn hoặc các mô hình ML của bên thứ ba mà bạn có thể triển khai chỉ bằng một vài nút bấm. Hoặc bạn có thể muốn tận dụng nền tảng Amazon để xây dựng và mở rộng quy mô các ứng dụng AI tổng quát hoặc bạn có thể tận dụng Dịch vụ AI được đào tạo trước của AWS, không yêu cầu bạn phải học các kỹ năng học máy. AWS cung cấp hỗ trợ cho các tình huống mà tổ chức muốn đưa mô hình của riêng họ lên Amazon SageMaker or vào Amazon SageMaker Canvas để dự đoán.
Trong bài đăng này, chúng tôi trình bày một trong nhiều tùy chọn mà bạn có để tận dụng bộ khả năng AI/ML rộng nhất và sâu nhất của AWS trong môi trường nhiều đám mây. Chúng tôi trình bày cách bạn có thể xây dựng và huấn luyện mô hình ML trong AWS và triển khai mô hình đó trên nền tảng khác. Chúng tôi đào tạo mô hình bằng Amazon SageMaker, lưu trữ các thành phần lạ của mô hình trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3), triển khai và chạy mô hình trong Azure. Cách tiếp cận này có lợi nếu bạn sử dụng dịch vụ AWS cho ML để có bộ tính năng toàn diện nhất, tuy nhiên, bạn cần chạy mô hình của mình trong một nhà cung cấp đám mây khác trong một trong các tình huống mà chúng ta đã thảo luận.
Khái niệm chính
Xưởng sản xuất Amazon SageMaker là một môi trường phát triển tích hợp (IDE) dựa trên web dành cho học máy. SageMaker Studio cho phép các nhà khoa học dữ liệu, kỹ sư ML và kỹ sư dữ liệu chuẩn bị dữ liệu, xây dựng, đào tạo và triển khai các mô hình ML trên một giao diện web. Với SageMaker Studio, bạn có thể truy cập các công cụ dành riêng cho mọi giai đoạn của vòng đời phát triển ML, từ chuẩn bị dữ liệu đến xây dựng, đào tạo và triển khai các mô hình ML, cải thiện năng suất của nhóm khoa học dữ liệu lên tới mười lần. Máy tính xách tay SageMaker Studio là những sổ ghi chép cộng tác, khởi đầu nhanh chóng, tích hợp với các công cụ ML chuyên dụng trong SageMaker và các dịch vụ AWS khác.
SageMaker là dịch vụ ML toàn diện cho phép các nhà phân tích kinh doanh, nhà khoa học dữ liệu và kỹ sư MLOps xây dựng, đào tạo và triển khai các mô hình ML cho mọi trường hợp sử dụng, bất kể kiến thức chuyên môn về ML.
AWS cung cấp Bộ chứa học sâu (DLC) dành cho các khung ML phổ biến như PyTorch, TensorFlow và Apache MXNet mà bạn có thể sử dụng với SageMaker để đào tạo và suy luận. Các DLC có sẵn dưới dạng hình ảnh Docker trong Đăng ký container đàn hồi Amazon (Amazon ECR). Hình ảnh Docker được cài đặt sẵn và thử nghiệm với các phiên bản mới nhất của các khung học sâu phổ biến cũng như các phần phụ thuộc khác cần thiết cho việc đào tạo và suy luận. Để biết danh sách đầy đủ các hình ảnh Docker dựng sẵn do SageMaker quản lý, hãy xem Các đường dẫn đăng ký Docker và mã mẫu. Amazon ECR hỗ trợ quét bảo mật và được tích hợp với Thanh tra Amazon dịch vụ quản lý lỗ hổng bảo mật để đáp ứng các yêu cầu bảo mật tuân thủ hình ảnh của tổ chức bạn và để tự động hóa quá trình quét đánh giá lỗ hổng bảo mật. Các tổ chức cũng có thể sử dụng Đào tạo AWS và Suy luận AWS để có hiệu suất về giá tốt hơn khi chạy các công việc đào tạo hoặc suy luận ML.
Tổng quan về giải pháp
Trong phần này, chúng tôi mô tả cách xây dựng và đào tạo mô hình bằng SageMaker và triển khai mô hình đó lên Azure Functions. Chúng tôi sử dụng sổ ghi chép SageMaker Studio để xây dựng, đào tạo và triển khai mô hình. Chúng tôi đào tạo mô hình trong SageMaker bằng hình ảnh Docker dựng sẵn cho PyTorch. Mặc dù chúng tôi đang triển khai mô hình đã đào tạo lên Azure trong trường hợp này nhưng bạn có thể sử dụng phương pháp tương tự để triển khai mô hình trên các nền tảng khác, chẳng hạn như tại cơ sở hoặc các nền tảng đám mây khác.
Khi chúng tôi tạo công việc đào tạo, SageMaker sẽ khởi chạy các phiên bản điện toán ML và sử dụng mã đào tạo cũng như tập dữ liệu đào tạo của chúng tôi để đào tạo mô hình. Nó lưu các thành phần lạ của mô hình kết quả và đầu ra khác vào bộ chứa S3 mà chúng tôi chỉ định làm đầu vào cho công việc đào tạo. Khi quá trình đào tạo mô hình hoàn tất, chúng tôi sử dụng Mở trao đổi mạng thần kinh (ONNX) để xuất mô hình PyTorch dưới dạng mô hình ONNX.
Cuối cùng, chúng tôi triển khai mô hình ONNX cùng với mã suy luận tùy chỉnh được viết bằng Python sang Azure Functions bằng Azure CLI. ONNX hỗ trợ hầu hết các khung và công cụ ML thường được sử dụng. Một điều cần lưu ý là việc chuyển đổi mô hình ML sang ONNX rất hữu ích nếu bạn muốn sử dụng khung triển khai mục tiêu khác, chẳng hạn như PyTorch sang TensorFlow. Nếu bạn đang sử dụng cùng một khung trên cả nguồn và đích, bạn không cần chuyển đổi mô hình sang định dạng ONNX.
Sơ đồ sau minh họa kiến trúc cho phương pháp này.
Chúng tôi sử dụng sổ ghi chép SageMaker Studio cùng với SDK Python của SageMaker để xây dựng và huấn luyện mô hình của chúng tôi. SageMaker Python SDK là thư viện mã nguồn mở để đào tạo và triển khai các mô hình ML trên SageMaker. Để biết thêm chi tiết, hãy tham khảo Tạo hoặc mở sổ ghi chép Amazon SageMaker Studio.
Các đoạn mã trong các phần sau đã được thử nghiệm trong môi trường sổ ghi chép SageMaker Studio bằng hình ảnh Data Science 3.0 và nhân Python 3.0.
Trong giải pháp này, chúng tôi chứng minh các bước sau:
- Huấn luyện mô hình PyTorch.
- Xuất mô hình PyTorch dưới dạng mô hình ONNX.
- Đóng gói mô hình và mã suy luận.
- Triển khai mô hình lên Azure Functions.
Điều kiện tiên quyết
Bạn nên có các điều kiện tiên quyết sau:
- Một tài khoản AWS.
- Một miền SageMaker và người dùng SageMaker Studio. Để biết hướng dẫn tạo các mục này, hãy tham khảo Tích hợp vào miền Amazon SageMaker bằng cách sử dụng thiết lập nhanh.
- Azure CLI.
- Quyền truy cập vào Azure và thông tin đăng nhập của người đứng đầu dịch vụ có quyền tạo và quản lý Chức năng Azure.
Đào tạo mô hình với PyTorch
Trong phần này, chúng tôi trình bày chi tiết các bước để huấn luyện mô hình PyTorch.
Cài đặt phụ thuộc
Cài đặt các thư viện để thực hiện các bước cần thiết cho việc đào tạo mô hình và triển khai mô hình:
pip install torchvision onnx onnxruntime
Hoàn tất thiết lập ban đầu
Chúng tôi bắt đầu bằng cách nhập AWS SDK cho Python (Boto3) và SDK Python của SageMaker. Là một phần của thiết lập, chúng tôi xác định như sau:
- Đối tượng phiên cung cấp các phương thức tiện lợi trong ngữ cảnh của SageMaker và tài khoản của chính chúng ta.
- ARN vai trò SageMaker dùng để ủy quyền cho dịch vụ đào tạo và lưu trữ. Chúng tôi cần điều này để các dịch vụ này có thể truy cập vào bộ chứa S3 nơi lưu trữ dữ liệu và mô hình của chúng tôi. Để biết hướng dẫn về cách tạo vai trò đáp ứng nhu cầu kinh doanh của bạn, hãy tham khảo Vai trò của SageMaker. Đối với bài đăng này, chúng tôi sử dụng vai trò thực thi tương tự như phiên bản sổ ghi chép Studio của chúng tôi. Chúng tôi có được vai trò này bằng cách gọi
sagemaker.get_execution_role()
. - Khu vực mặc định nơi công việc đào tạo của chúng tôi sẽ chạy.
- Nhóm mặc định và tiền tố mà chúng tôi sử dụng để lưu trữ đầu ra của mô hình.
Xem mã sau đây:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
Tạo tập dữ liệu huấn luyện
Chúng tôi sử dụng tập dữ liệu có sẵn trong nhóm công khai sagemaker-example-files-prod-{region}
. Bộ dữ liệu chứa các tệp sau:
- tàu-hình ảnh-idx3-ubyte.gz – Chứa hình ảnh tập huấn luyện
- tàu-nhãn-idx1-ubyte.gz – Chứa nhãn tập huấn luyện
- t10k-images-idx3-ubyte.gz – Chứa hình ảnh bộ thử nghiệm
- t10k-nhãn-idx1-ubyte.gz – Chứa nhãn bộ kiểm tra
Chúng tôi sử dụngtorchvision.datasets
mô-đun để tải xuống dữ liệu cục bộ từ nhóm công khai trước khi tải dữ liệu đó lên nhóm dữ liệu đào tạo của chúng tôi. Chúng tôi chuyển vị trí vùng lưu trữ này làm thông tin đầu vào cho công việc đào tạo SageMaker. Tập lệnh huấn luyện của chúng tôi sử dụng vị trí này để tải xuống và chuẩn bị dữ liệu huấn luyện, sau đó huấn luyện mô hình. Xem đoạn mã sau:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
Tạo kịch bản đào tạo
Với SageMaker, bạn có thể mang mô hình của riêng mình bằng cách sử dụng chế độ tập lệnh. Với chế độ tập lệnh, bạn có thể sử dụng vùng chứa SageMaker dựng sẵn và cung cấp tập lệnh đào tạo của riêng mình, tập lệnh này có định nghĩa mô hình, cùng với mọi thư viện tùy chỉnh và phần phụ thuộc. Các SDK Python của SageMaker chuyển kịch bản của chúng tôi dưới dạng entry_point
vào vùng chứa để tải và chạy hàm train từ tập lệnh được cung cấp để huấn luyện mô hình của chúng ta.
Khi quá trình đào tạo hoàn tất, SageMaker lưu kết quả đầu ra của mô hình vào bộ chứa S3 mà chúng tôi đã cung cấp làm tham số cho công việc đào tạo.
Mã đào tạo của chúng tôi được điều chỉnh từ sau Tập lệnh ví dụ PyTorch. Đoạn mã sau đây hiển thị định nghĩa mô hình và hàm đào tạo:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
Đào tạo mô hình
Bây giờ chúng ta đã thiết lập môi trường và tạo tập dữ liệu đầu vào cũng như tập lệnh đào tạo tùy chỉnh, chúng ta có thể bắt đầu đào tạo mô hình bằng SageMaker. Chúng tôi sử dụng công cụ ước tính PyTorch trong SageMaker Python SDK để bắt đầu công việc đào tạo về SageMaker. Chúng tôi chuyển các tham số cần thiết cho công cụ ước tính và gọi phương thức phù hợp. Khi chúng tôi gọi mức độ phù hợp trên công cụ ước tính PyTorch, SageMaker sẽ bắt đầu công việc đào tạo bằng cách sử dụng tập lệnh của chúng tôi làm mã đào tạo:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
Xuất mô hình được đào tạo dưới dạng mô hình ONNX
Sau khi quá trình đào tạo hoàn tất và mô hình của chúng tôi được lưu vào vị trí xác định trước trong Amazon S3, chúng tôi xuất mô hình sang mô hình ONNX bằng thời gian chạy ONNX.
Chúng tôi đưa mã để xuất mô hình của mình sang ONNX trong tập lệnh đào tạo để chạy sau khi quá trình đào tạo hoàn tất.
PyTorch xuất mô hình sang ONNX bằng cách chạy mô hình bằng cách sử dụng đầu vào của chúng tôi và ghi lại dấu vết của các toán tử được sử dụng để tính toán đầu ra. Chúng tôi sử dụng đầu vào ngẫu nhiên đúng loại với PyTorch torch.onnx.export
chức năng xuất mô hình sang ONNX. Chúng tôi cũng chỉ định thứ nguyên đầu tiên trong đầu vào của mình là thứ nguyên động để mô hình của chúng tôi chấp nhận một biến batch_size
của đầu vào trong quá trình suy luận.
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
ONNX là định dạng tiêu chuẩn mở dành cho các mô hình học sâu cho phép khả năng tương tác giữa các khung học sâu như PyTorch, Bộ công cụ nhận thức của Microsoft (CNTK), v.v. Điều này có nghĩa là bạn có thể sử dụng bất kỳ khung nào trong số này để huấn luyện mô hình và sau đó xuất các mô hình được đào tạo trước ở định dạng ONNX. Bằng cách xuất mô hình sang ONNX, bạn sẽ có được lợi ích từ việc có nhiều lựa chọn hơn về thiết bị và nền tảng triển khai.
Tải xuống và trích xuất các tạo phẩm mô hình
Mô hình ONNX mà tập lệnh đào tạo của chúng tôi đã lưu đã được SageMaker sao chép sang Amazon S3 ở vị trí đầu ra mà chúng tôi đã chỉ định khi bắt đầu công việc đào tạo. Các tạo phẩm mô hình được lưu trữ dưới dạng tệp lưu trữ nén có tên model.tar.gz
. Chúng tôi tải tệp lưu trữ này xuống một thư mục cục bộ trong phiên bản sổ ghi chép Studio của chúng tôi và trích xuất các tạo phẩm mô hình, cụ thể là mô hình ONNX.
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
Xác thực mô hình ONNX
Mô hình ONNX được xuất sang tệp có tên mnist-pytorch.onnx
bởi kịch bản đào tạo của chúng tôi. Sau khi tải xuống và giải nén tệp này, chúng tôi có thể tùy ý xác thực mô hình ONNX bằng cách sử dụng onnx.checker
mô-đun. Các check_model
trong mô-đun này kiểm tra tính nhất quán của mô hình. Một ngoại lệ được đưa ra nếu thử nghiệm thất bại.
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
Đóng gói mô hình và mã suy luận
Đối với bài đăng này, chúng tôi sử dụng triển khai .zip cho Azure Functions. Trong phương pháp này, chúng tôi đóng gói mô hình, mã đi kèm và cài đặt Hàm Azure trong một tệp .zip và xuất bản nó lên Azure Functions. Đoạn mã sau hiển thị cấu trúc thư mục của gói triển khai của chúng tôi:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
Liệt kê các phụ thuộc
Chúng tôi liệt kê các phụ thuộc cho mã suy luận của chúng tôi trong requirements.txt
tập tin ở thư mục gốc của gói của chúng tôi. Tệp này được sử dụng để xây dựng môi trường Chức năng Azure khi chúng tôi xuất bản gói.
azure-functions
numpy
onnxruntime
Viết mã suy luận
Chúng tôi sử dụng Python để viết mã suy luận sau, sử dụng thư viện ONNX Runtime để tải mô hình của chúng tôi và chạy suy luận. Điều này hướng dẫn ứng dụng Azure Functions cung cấp điểm cuối tại /classify
đường dẫn tương đối.
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
Triển khai mô hình lên Azure Functions
Bây giờ chúng ta đã đóng gói mã thành định dạng .zip bắt buộc, chúng ta đã sẵn sàng xuất bản mã đó lên Azure Functions. Chúng tôi thực hiện điều đó bằng cách sử dụng Azure CLI, một tiện ích dòng lệnh để tạo và quản lý tài nguyên Azure. Cài đặt Azure CLI với mã sau:
!pip install -q azure-cli
Sau đó hoàn thành các bước sau:
- Đăng nhập vào Azure:
!az login
- Thiết lập các thông số tạo tài nguyên:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- Sử dụng các lệnh sau để tạo ứng dụng Azure Functions cùng với các tài nguyên tiên quyết:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- Thiết lập Hàm Azure để khi chúng tôi triển khai gói Hàm,
requirements.txt
file được sử dụng để xây dựng các phần phụ thuộc ứng dụng của chúng tôi:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- Định cấu hình ứng dụng Hàm để chạy mô hình Python v2 và thực hiện xây dựng dựa trên mã mà nó nhận được sau khi triển khai .zip:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- Sau khi chúng ta có nhóm tài nguyên, vùng lưu trữ và ứng dụng Hàm với cấu hình phù hợp, hãy xuất bản mã lên ứng dụng Hàm:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
Kiểm tra mô hình
Chúng tôi đã triển khai mô hình ML cho Azure Functions dưới dạng trình kích hoạt HTTP, nghĩa là chúng tôi có thể sử dụng URL ứng dụng Functions để gửi yêu cầu HTTP tới hàm nhằm gọi hàm và chạy mô hình.
Để chuẩn bị đầu vào, hãy tải xuống các tệp hình ảnh thử nghiệm từ nhóm tệp mẫu của SageMaker và chuẩn bị một bộ mẫu theo định dạng mà mô hình yêu cầu:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
Sử dụng thư viện yêu cầu để gửi yêu cầu đăng đến điểm cuối suy luận bằng thông tin đầu vào mẫu. Điểm cuối suy luận có định dạng như trong đoạn mã sau:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
Làm sạch
Khi bạn hoàn tất việc kiểm tra mô hình, hãy xóa nhóm tài nguyên cùng với các tài nguyên được chứa, bao gồm vùng lưu trữ và ứng dụng Hàm:
!az group delete --name {resource_group_name} --yes
Ngoài ra, bạn nên tắt các tài nguyên nhàn rỗi trong SageMaker Studio để giảm chi phí. Để biết thêm thông tin, hãy tham khảo Tiết kiệm chi phí bằng cách tự động tắt các tài nguyên nhàn rỗi trong Amazon SageMaker Studio.
Kết luận
Trong bài đăng này, chúng tôi đã trình bày cách bạn có thể xây dựng và đào tạo mô hình ML bằng SageMaker và triển khai nó cho một nhà cung cấp đám mây khác. Trong giải pháp này, chúng tôi đã sử dụng sổ ghi chép SageMaker Studio, nhưng đối với khối lượng công việc sản xuất, chúng tôi khuyên bạn nên sử dụng MLOps để tạo ra các quy trình đào tạo có thể lặp lại nhằm đẩy nhanh quá trình phát triển và triển khai mô hình.
Bài đăng này không hiển thị tất cả các cách có thể để triển khai và chạy mô hình trong môi trường nhiều đám mây. Ví dụ: bạn cũng có thể đóng gói mô hình của mình vào một hình ảnh vùng chứa cùng với mã suy luận và các thư viện phụ thuộc để chạy mô hình dưới dạng ứng dụng được đóng gói trong bất kỳ nền tảng nào. Để biết thêm thông tin về phương pháp này, hãy tham khảo Triển khai các ứng dụng vùng chứa trong môi trường nhiều đám mây bằng Amazon CodeCatalyst. Mục đích của bài đăng là trình bày cách các tổ chức có thể sử dụng các khả năng AI/ML của AWS trong môi trường nhiều đám mây.
Giới thiệu về tác giả
Raja Vaidyanathan là Kiến trúc sư giải pháp tại AWS hỗ trợ khách hàng sử dụng dịch vụ tài chính toàn cầu. Raja làm việc với khách hàng để tìm ra giải pháp cho những vấn đề phức tạp có tác động tích cực lâu dài đến hoạt động kinh doanh của họ. Anh ấy là một chuyên gia kỹ thuật giỏi, có kỹ năng về chiến lược CNTT, quản lý dữ liệu doanh nghiệp và kiến trúc ứng dụng, đặc biệt quan tâm đến phân tích và học máy.
Amandeep Bajwa là Kiến trúc sư giải pháp cấp cao tại AWS hỗ trợ các doanh nghiệp dịch vụ tài chính. Ông giúp các tổ chức đạt được kết quả kinh doanh bằng cách xác định chiến lược chuyển đổi đám mây phù hợp dựa trên xu hướng của ngành và các ưu tiên của tổ chức. Một số lĩnh vực mà Amandeep tư vấn là di chuyển đám mây, chiến lược đám mây (bao gồm cả đám mây lai và đa đám mây), chuyển đổi kỹ thuật số, dữ liệu và phân tích cũng như công nghệ nói chung.
Prema Iyer là Giám đốc tài khoản kỹ thuật cấp cao về Hỗ trợ doanh nghiệp AWS. Cô làm việc với khách hàng bên ngoài trong nhiều dự án khác nhau, giúp họ nâng cao giá trị giải pháp của mình khi sử dụng AWS.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- PlatoSức khỏe. Tình báo thử nghiệm lâm sàng và công nghệ sinh học. Truy cập Tại đây.
- nguồn: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- : có
- :là
- :không phải
- :Ở đâu
- $ LÊN
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- Giới thiệu
- đẩy nhanh tiến độ
- Chấp nhận
- truy cập
- Tài khoản
- Đạt được
- mua lại
- Lợi thế
- Sau
- AI
- AI / ML
- Tất cả
- cho phép
- dọc theo
- Đã
- Ngoài ra
- Mặc dù
- đàn bà gan dạ
- Amazon SageMaker
- Canvas SageMaker của Amazon
- Xưởng sản xuất Amazon SageMaker
- Amazon Web Services
- an
- Các nhà phân tích
- phân tích
- và
- Nặc Danh
- Một
- bất kì
- Apache
- ứng dụng
- Các Ứng Dụng
- các ứng dụng
- phương pháp tiếp cận
- thích hợp
- kiến trúc
- lưu trữ
- LÀ
- khu vực
- AS
- thẩm định, lượng định, đánh giá
- At
- tự động hóa
- tự động
- có sẵn
- AWS
- VÒI
- Azure
- dựa
- BE
- được
- trước
- bắt đầu
- mang lại lợi ích
- hưởng lợi
- Hơn
- giữa
- cả hai
- mang lại
- rộng hơn
- xây dựng
- Xây dựng
- kinh doanh
- nhưng
- by
- cuộc gọi
- gọi là
- gọi
- CAN
- vải
- khả năng
- mang
- trường hợp
- Séc
- tốt nghiệp lớp XNUMX
- Phân loại
- Nhấp chuột
- đám mây
- mã
- nhận thức
- hợp tác
- công ty
- hoàn thành
- phức tạp
- tuân thủ
- toàn diện
- Tính
- Cấu hình
- chứa
- Container
- Container
- chứa
- bối cảnh
- thuận tiện
- chuyển đổi
- chuyển đổi
- Trung tâm
- Chi phí
- có thể
- tạo
- tạo ra
- Tạo
- tạo
- Credentials
- khách hàng
- khách hàng
- dữ liệu
- quản lý dữ liệu
- Chuẩn bị dữ liệu
- khoa học dữ liệu
- bộ dữ liệu
- sâu
- học kĩ càng
- sâu nhất
- Mặc định
- định nghĩa
- định nghĩa
- chứng minh
- phụ thuộc
- Phụ thuộc
- triển khai
- triển khai
- triển khai
- triển khai
- mô tả
- chi tiết
- chi tiết
- Phát triển
- thiết bị
- Thiết bị (Devices)
- khác nhau
- kỹ thuật số
- chuyển đổi kỹ thuật số
- chữ số
- kích thước
- thảo luận
- do
- phu bến tàu
- miền
- thực hiện
- dont
- xuống
- tải về
- suốt trong
- năng động
- e
- khác
- ôm hôn
- cho phép
- cho phép
- cuối
- Điểm cuối
- Kỹ Sư
- Kỹ sư
- Doanh nghiệp
- doanh nghiệp
- Môi trường
- kỷ nguyên
- kỷ nguyên
- Mỗi
- ví dụ
- Trừ
- ngoại lệ
- thực hiện
- chuyên môn
- xuất khẩu
- xuất khẩu
- ngoài
- trích xuất
- không
- Tính năng
- vài
- Tập tin
- Các tập tin
- tài chính
- dịch vụ tài chính
- Tìm kiếm
- Tên
- phù hợp với
- tiếp theo
- Trong
- định dạng
- Nền tảng
- Khung
- khung
- từ
- chức năng
- chức năng
- Tổng Quát
- tạo
- thế hệ
- Trí tuệ nhân tạo
- được
- Toàn cầu
- tài chính toàn cầu
- Nhóm
- Có
- he
- giúp đỡ
- giúp
- lưu trữ
- Độ đáng tin của
- Hướng dẫn
- HTML
- http
- HTTPS
- Hỗn hợp
- ID
- xác định
- Nhàn rỗi
- if
- minh họa
- hình ảnh
- hình ảnh
- Va chạm
- nhập khẩu
- nhập khẩu
- nâng cao
- cải thiện
- in
- bao gồm
- Bao gồm
- độc lập
- ngành công nghiệp
- thông tin
- ban đầu
- đầu vào
- đầu vào
- cài đặt, dựng lên
- ví dụ
- hướng dẫn
- tích hợp
- tích hợp
- ý định
- lợi ích
- Giao thức
- Khả năng cộng tác
- trong
- IT
- ITS
- Việc làm
- việc làm
- jpg
- json
- Ngôn ngữ
- lớn
- mới nhất
- ra mắt
- LEARN
- học tập
- Chiều dài
- Tỉ lệ đòn bẩy
- thư viện
- Thư viện
- vòng đời
- Dòng
- linux
- Danh sách
- tải
- tải
- địa phương
- tại địa phương
- địa điểm thư viện nào
- khai thác gỗ
- lâu
- tìm kiếm
- sự mất
- máy
- học máy
- làm cho
- quản lý
- quản lý
- quản lý
- giám đốc
- nhiều
- bản đồ
- matplotlib
- Có thể..
- có nghĩa
- Gặp gỡ
- Đạt
- phương pháp
- phương pháp
- microsoft
- Might
- di cư
- ML
- MLOps
- Chế độ
- kiểu mẫu
- mô hình
- Mô-đun
- chi tiết
- hầu hết
- tên
- Được đặt theo tên
- cụ thể là
- Cần
- cần thiết
- nhu cầu
- net
- mạng
- thần kinh
- mạng lưới thần kinh
- máy tính xách tay
- cục mịch
- vật
- of
- on
- ONE
- mở
- mã nguồn mở
- hoạt động
- Hoạt động
- khai thác
- Các lựa chọn
- or
- gọi món
- cơ quan
- tổ chức
- tổ chức
- OS
- Nền tảng khác
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- ra
- kết quả
- đầu ra
- bên ngoài
- riêng
- gói
- đóng gói
- tham số
- thông số
- một phần
- riêng
- bên
- vượt qua
- vượt qua
- con đường
- Thực hiện
- quyền
- nền tảng
- Nền tảng
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- Phổ biến
- tích cực
- có thể
- Bài đăng
- Dự đoán
- chuẩn bị
- Chuẩn bị
- điều kiện tiên quyết
- chính
- Hiệu trưởng
- vấn đề
- Xử lý
- Sản lượng
- năng suất
- Sản phẩm
- chuyên nghiệp
- dự án
- cho
- cung cấp
- nhà cung cấp dịch vụ
- cung cấp
- công khai
- xuất bản
- Python
- ngọn đuốc
- Nhanh chóng
- nâng lên
- ngẫu nhiên
- sẵn sàng
- nhận
- đề nghị
- ghi âm
- giảm
- xem
- Bất kể
- khu
- đăng ký
- tương đối
- có thể lặp lại
- yêu cầu
- yêu cầu
- yêu cầu
- cần phải
- Yêu cầu
- tài nguyên
- Thông tin
- phản ứng
- kết quả
- kết quả
- trở lại
- ngay
- Vai trò
- nguồn gốc
- chạy
- chạy
- chạy
- nhà làm hiền triết
- tương tự
- lưu
- Quy mô
- quét
- kịch bản
- Khoa học
- các nhà khoa học
- kịch bản
- sdk
- trung học
- Phần
- phần
- an ninh
- xem
- lựa chọn
- TỰ
- gửi
- cao cấp
- dịch vụ
- DỊCH VỤ
- Phiên
- định
- thiết lập
- thiết lập
- Hình dạng
- chị ấy
- nên
- hiển thị
- cho thấy
- thể hiện
- Chương trình
- Đóng cửa
- tắt
- Đơn giản
- tình huống
- lành nghề
- kỹ năng
- So
- Phần mềm
- giải pháp
- Giải pháp
- một số
- nguồn
- chủ quyền
- quy định
- Traineeship
- Tiêu chuẩn
- Bắt đầu
- bắt đầu
- bắt đầu
- Các bước
- là gắn
- hàng
- lưu trữ
- Chiến lược
- Chuỗi
- mạnh mẽ
- cấu trúc
- phòng thu
- Sau đó
- Thành công
- như vậy
- hỗ trợ
- Hỗ trợ
- Hỗ trợ
- Hãy
- mất
- Mục tiêu
- nhóm
- Kỹ thuật
- Công nghệ
- Công nghệ
- 10
- tensorflow
- thử nghiệm
- thử nghiệm
- Kiểm tra
- văn bản
- việc này
- Sản phẩm
- Nguồn
- cung cấp their dịch
- Them
- tự
- sau đó
- Kia là
- họ
- điều
- Thứ ba
- điều này
- thời gian
- đến
- bộ công cụ
- công cụ
- ngọn đuốc
- ngọn đuốc
- Dấu vết
- Train
- đào tạo
- Hội thảo
- Chuyển đổi
- Chuyển đổi
- Chiến lược chuyển đổi
- biến đổi
- Xu hướng
- kích hoạt
- được kích hoạt
- đúng
- thử
- kiểu
- độc đáo
- tải lên
- Đang tải lên
- URL
- sử dụng
- ca sử dụng
- đã sử dụng
- người sử dang
- sử dụng
- sử dụng
- tiện ích
- HIỆU LỰC
- giá trị
- biến
- nhiều
- nhà cung cấp
- phiên bản
- dễ bị tổn thương
- muốn
- là
- cách
- we
- web
- các dịch vụ web
- Dựa trên web
- TỐT
- khi nào
- cái nào
- sẽ
- với
- ở trong
- Luồng công việc
- công trinh
- viết
- viết
- X
- nhưng
- Bạn
- trên màn hình
- zephyrnet
- Zip