Logo Zephyrnet

Cải thiện năng suất của nhà phát triển ML với Weights & Biases: Một ví dụ về thị giác máy tính trên Amazon SageMaker

Ngày:

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.

Khi ngày càng có nhiều tổ chức sử dụng các kỹ thuật học sâu như thị giác máy tính và xử lý ngôn ngữ tự nhiên, thì nhân vật nhà phát triển máy học (ML) cần công cụ có thể mở rộng xung quanh việc theo dõi thử nghiệm, truyền thừa và cộng tác. Theo dõi thử nghiệm bao gồm siêu dữ liệu như hệ điều hành, cơ sở hạ tầng được sử dụng, thư viện và bộ dữ liệu đầu vào và đầu ra — thường được theo dõi trên bảng tính theo cách thủ công. Lineage liên quan đến việc theo dõi tập dữ liệu, phép biến đổi và thuật toán được sử dụng để tạo mô hình ML. Cộng tác bao gồm các nhà phát triển ML làm việc trên một dự án và cả các nhà phát triển ML chia sẻ kết quả của họ giữa các nhóm và với các bên liên quan trong kinh doanh — một quá trình thường được thực hiện qua email, ảnh chụp màn hình và bản trình bày PowerPoint.

Trong bài đăng này, chúng tôi đào tạo một mô hình xác định các đối tượng cho một trường hợp sử dụng xe tự hành bằng Trọng lượng & Thành kiến ​​(W & B) và Amazon SageMaker. Chúng tôi giới thiệu cách giải pháp chung giảm bớt công việc thủ công cho nhà phát triển ML, tạo ra sự minh bạch hơn trong quá trình phát triển mô hình và cho phép các nhóm cộng tác trong các dự án.

Chúng tôi chạy ví dụ này trên Xưởng sản xuất Amazon SageMaker để bạn tự mình thử.

Tổng quan về Trọng số & Thành kiến

Weights & Biases giúp các nhóm ML xây dựng các mô hình tốt hơn nhanh hơn. Chỉ với một vài dòng mã trong sổ ghi chép SageMaker của bạn, bạn có thể gỡ lỗi, so sánh và tái tạo ngay lập tức các mô hình của mình — kiến ​​trúc, siêu tham số, git commit, trọng lượng mô hình, mức sử dụng GPU, bộ dữ liệu và dự đoán — tất cả trong khi cộng tác với đồng đội của bạn.

W & B được tin tưởng bởi hơn 200,000 học viên ML từ một số công ty và tổ chức nghiên cứu sáng tạo nhất trên thế giới. Để dùng thử miễn phí, hãy đăng ký tại Trọng số & Thành kiến, Hoặc truy cập vào Danh sách W&B AWS Marketplace.

Bắt đầu với SageMaker Studio

SageMaker Studio là môi trường phát triển tích hợp đầy đủ (IDE) đầu tiên cho ML. Studio cung cấp một giao diện dựa trên web duy nhất, nơi những người thực hành ML và nhà khoa học dữ liệu có thể xây dựng, đào tạo và triển khai các mô hình chỉ với một vài cú nhấp chuột, tất cả ở cùng một nơi.

Để bắt đầu với Studio, bạn cần có tài khoản AWS và Quản lý truy cập và nhận dạng AWS (IAM) người dùng hoặc vai trò có quyền tạo miền Studio. Tham khảo Tích hợp vào Miền Amazon SageMaker để tạo một miền và Tài liệu studio để biết tổng quan về cách sử dụng sổ ghi chép và giao diện trực quan của Studio.

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

Đối với bài đăng này, chúng tôi quan tâm đến việc chạy mã của riêng mình, vì vậy hãy nhập một số sổ ghi chép từ GitHub. Chúng tôi sử dụng những thứ sau Repo GitHub như một ví dụ, vì vậy hãy tải cuốn sổ này.

Bạn có thể sao chép kho lưu trữ thông qua thiết bị đầu cuối hoặc giao diện người dùng Studio. Để sao chép một kho lưu trữ thông qua thiết bị đầu cuối, hãy mở một thiết bị đầu cuối hệ thống (trên Tập tin menu, chọn Mới Thiết bị đầu cuối) và nhập lệnh sau:

git clone https://github.com/wandb/SageMakerStudio

Để sao chép kho lưu trữ từ giao diện người dùng Studio, hãy xem Sao chép kho lưu trữ Git trong SageMaker Studio.

Để bắt đầu, hãy chọn 01_data_processing.ipynb sổ tay. Bạn được nhắc bằng lời nhắc của trình chuyển đổi hạt nhân. Ví dụ này sử dụng PyTorch, vì vậy chúng tôi có thể chọn Tối ưu hóa GPU PyTorch 1.10 Python 3.8 hình ảnh để bắt đầu sổ ghi chép của chúng tôi. Bạn có thể thấy ứng dụng đang khởi động và khi hạt nhân đã sẵn sàng, nó sẽ hiển thị kiểu phiên bản và hạt nhân ở trên cùng bên phải của sổ ghi chép của bạn.

Sổ ghi chép của chúng tôi cần một số phụ thuộc bổ sung. Kho lưu trữ này cung cấp một tệp tin request.txt với các phần phụ thuộc bổ sung. Chạy ô đầu tiên để cài đặt các phụ thuộc bắt buộc:

%pip install -r requirements.txt

Bạn cũng có thể tạo cấu hình vòng đời để tự động cài đặt các gói mỗi khi khởi động ứng dụng PyTorch. Nhìn thấy Tùy chỉnh Amazon SageMaker Studio bằng cách sử dụng Cấu hình vòng đời để được hướng dẫn và triển khai mẫu.

Sử dụng Trọng số & Thành kiến ​​trong SageMaker Studio

Trọng số & Thành kiến ​​(wandb) là một thư viện Python tiêu chuẩn. Sau khi cài đặt, thật đơn giản chỉ cần thêm một vài dòng mã vào tập lệnh đào tạo của bạn và bạn đã sẵn sàng ghi nhật ký các thử nghiệm. Chúng tôi đã cài đặt nó thông qua tệp tin request.txt của chúng tôi. Bạn cũng có thể cài đặt nó theo cách thủ công với mã sau:

! pip install wandb

Nghiên cứu điển hình: Phân đoạn ngữ nghĩa xe tự hành

Bộ dữ liệu

Chúng tôi sử dụng Cơ sở dữ liệu video được gắn nhãn lái xe của Cambridge (CamVid) cho ví dụ này. Nó chứa một bộ sưu tập các video có nhãn ngữ nghĩa lớp đối tượng, hoàn chỉnh với siêu dữ liệu. Cơ sở dữ liệu cung cấp các nhãn chân lý nền liên kết mỗi pixel với một trong 32 lớp ngữ nghĩa. Chúng tôi có thể phiên bản tập dữ liệu của mình dưới dạng Wandb.Artifact, theo cách đó chúng ta có thể tham khảo nó sau này. Xem đoạn mã sau:

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

Bạn có thể theo dõi trong 01_data_processing.ipynb sổ tay.

Chúng tôi cũng ghi lại một bàn của tập dữ liệu. Bảng là các thực thể giống DataFrame phong phú và mạnh mẽ cho phép bạn truy vấn và phân tích dữ liệu dạng bảng. Bạn có thể hiểu bộ dữ liệu của mình, trực quan hóa các dự đoán mô hình và chia sẻ thông tin chi tiết trong trang tổng quan trung tâm.

Bảng Weights & Biases hỗ trợ nhiều định dạng đa phương tiện, như hình ảnh, âm thanh và dạng sóng. Để có danh sách đầy đủ các định dạng phương tiện, hãy tham khảo Loại dữ liệu.

Ảnh chụp màn hình sau đây cho thấy một bảng có hình ảnh thô với các phân đoạn sự thật trên mặt đất. Bạn cũng có thể xem một phiên bản tương tác của bảng này.

hình ảnh

Đào tạo một người mẫu

Bây giờ chúng tôi có thể tạo một mô hình và đào tạo nó trên tập dữ liệu của chúng tôi. Chúng tôi sử dụng Kim tự thápfastai để nhanh chóng tạo mẫu đường cơ sở và sau đó sử dụng wandb.Sweeps để tối ưu hóa các siêu tham số của chúng tôi. Cùng theo dõi trong 02_semantic_segmentation.ipynb sổ tay. Khi được nhắc về một nhân khi mở sổ ghi chép, hãy chọn nhân tương tự từ sổ ghi chép đầu tiên của chúng tôi, Tối ưu hóa GPU PyTorch 1.10 Python 3.8. Các gói của bạn đã được cài đặt vì bạn đang sử dụng cùng một ứng dụng.

Mô hình được cho là học chú thích trên mỗi pixel của một cảnh được chụp theo quan điểm của tác nhân tự trị. Mô hình cần phân loại hoặc phân đoạn từng pixel của một cảnh nhất định thành 32 danh mục có liên quan, chẳng hạn như đường, người đi bộ, vỉa hè hoặc ô tô. Bạn có thể chọn bất kỳ hình ảnh được phân đoạn nào trên bảng và truy cập giao diện tương tác này để truy cập các kết quả và danh mục phân đoạn.

Bởi vì fastai thư viện có tích hợp với wandb, bạn chỉ cần vượt qua WandbCallback cho Người học:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

Đối với các thử nghiệm cơ bản, chúng tôi quyết định sử dụng một kiến ​​trúc đơn giản lấy cảm hứng từ UNet giấy có xương sống khác nhau từ timm. Chúng tôi đã đào tạo người mẫu của mình với Mất tiêu điểm làm tiêu chí. Với Weights & Biases, bạn có thể dễ dàng tạo trang tổng quan với tóm tắt các thử nghiệm của mình để nhanh chóng phân tích kết quả đào tạo, như thể hiện trong ảnh chụp màn hình sau. Bạn cũng có thể xem bảng điều khiển này một cách tương tác.

Tìm kiếm siêu tham số với quét

Để cải thiện hiệu suất của mô hình cơ sở, chúng ta cần chọn mô hình tốt nhất và bộ siêu tham số tốt nhất để đào tạo. W&B giúp chúng tôi dễ dàng sử dụng quét.

Chúng tôi thực hiện một Tìm kiếm siêu tham số Bayes với mục tiêu tối đa hóa độ chính xác nền trước của mô hình trên tập dữ liệu xác thực. Để thực hiện quét, chúng tôi xác định tệp cấu hình wipe.yaml. Bên trong tệp này, chúng tôi chuyển phương thức mong muốn để sử dụng: bayes và các tham số và giá trị tương ứng của chúng để tìm kiếm. Trong trường hợp của chúng tôi, chúng tôi thử các chức năng hỗ trợ, kích thước lô và các chức năng lỗ khác nhau. Chúng tôi cũng khám phá các thông số tối ưu hóa khác nhau như tỷ lệ học tập và giảm trọng lượng. Bởi vì đây là các giá trị liên tục, chúng tôi lấy mẫu từ một phân phối. Có nhiều các tùy chọn cấu hình có sẵn để quét.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

Sau đó, trong một thiết bị đầu cuối, bạn khởi chạy quá trình quét bằng cách sử dụng dòng lệnh Wandb:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

Và sau đó khởi chạy tác nhân quét trên máy này với mã sau:

$ wandb agent <sweep_id>

Khi quá trình quét kết thúc, chúng ta có thể sử dụng biểu đồ tọa độ song song để khám phá hiệu suất của các mô hình với nhiều xương sống khác nhau và các bộ siêu tham số khác nhau. Dựa vào đó, chúng ta có thể xem mô hình nào hoạt động tốt nhất.

Ảnh chụp màn hình sau đây cho thấy kết quả của các lần quét, bao gồm biểu đồ tọa độ song song và biểu đồ tương quan tham số. Bạn cũng có thể xem bảng điều khiển quét này một cách tương tác.

Chúng tôi có thể rút ra những thông tin chi tiết chính sau đây từ quá trình quét:

  • Tỷ lệ học tập thấp hơn và giảm trọng lượng thấp hơn dẫn đến độ chính xác của tiền cảnh và điểm xúc xắc tốt hơn.
  • Kích thước lô có mối tương quan tích cực mạnh mẽ với các chỉ số.
  • Sản phẩm Xương sống dựa trên VGG có thể không phải là một lựa chọn tốt để đào tạo mô hình cuối cùng của chúng tôi vì chúng dễ dẫn đến gradient biến mất. (Chúng được lọc ra khi khoản lỗ phân kỳ.)
  • Sản phẩm ResNet nền tảng mang lại hiệu suất tổng thể tốt nhất so với các chỉ số.
  • Đường trục ResNet34 hoặc ResNet50 nên được chọn cho mô hình cuối cùng do hiệu suất mạnh mẽ của chúng về mặt số liệu.

Dữ liệu và mô hình dòng dõi

Các tạo tác của W&B được thiết kế để giúp bạn dễ dàng phiên bản bộ dữ liệu và mô hình của mình, bất kể bạn muốn lưu trữ tệp của mình bằng W&B hay bạn đã có sẵn một nhóm mà bạn muốn W&B theo dõi. Sau khi bạn theo dõi tập dữ liệu hoặc tệp mô hình của mình, W&B sẽ tự động ghi lại từng sửa đổi, cung cấp cho bạn một lịch sử đầy đủ và có thể kiểm tra được về các thay đổi đối với tệp của bạn.

Trong trường hợp của chúng tôi, tập dữ liệu, mô hình và các bảng khác nhau được tạo trong quá trình đào tạo được ghi vào không gian làm việc. Bạn có thể nhanh chóng xem và hình dung dòng dõi này bằng cách truy cập Hiện vật .

hình ảnh

Giải thích các dự đoán của mô hình

Trọng lượng & Độ lệch đặc biệt hữu ích khi đánh giá hiệu suất của mô hình bằng cách sử dụng sức mạnh của Wandb.Tables để hình dung mô hình của chúng ta đang hoạt động kém ở đâu. Trong trường hợp này, chúng tôi đặc biệt quan tâm đến việc phát hiện chính xác những người dùng dễ bị tổn thương như xe đạp và người đi bộ.

Chúng tôi đã ghi các mặt nạ dự đoán cùng với hệ số điểm Xúc xắc của mỗi lớp vào một bảng. Sau đó, chúng tôi lọc theo các hàng có chứa các lớp mong muốn và sắp xếp theo thứ tự tăng dần trên điểm Xúc xắc.

Trong bảng sau, trước tiên, chúng tôi lọc bằng cách chọn vị trí có điểm Xúc xắc dương tính (người đi bộ hiện diện trong hình ảnh). Sau đó, chúng tôi sắp xếp theo thứ tự tăng dần để xác định những người đi bộ bị phát hiện kém nhất của chúng tôi. Hãy nhớ rằng điểm Xúc xắc bằng 1 có nghĩa là phân chia chính xác hạng người đi bộ. Bạn cũng có thể xem bảng này một cách tương tác.

hình ảnh

Chúng ta có thể lặp lại phân tích này với các lớp dễ bị tổn thương khác, chẳng hạn như xe đạp hoặc đèn giao thông.

Tính năng này là một cách rất tốt để xác định các hình ảnh không được gắn nhãn chính xác và gắn thẻ chúng để chú thích lại.

Kết luận

Bài đăng này giới thiệu nền tảng MLOps Weights & Biases, cách thiết lập W&B trong SageMaker Studio và cách chạy một sổ ghi chép giới thiệu về giải pháp chung. Sau đó, chúng tôi đã chạy qua một trường hợp sử dụng phân đoạn ngữ nghĩa xe tự hành và trình diễn các hoạt động đào tạo theo dõi với các thử nghiệm W&B, tối ưu hóa siêu thông số bằng cách sử dụng quét W&B và giải thích kết quả bằng bảng W&B.

Nếu muốn tìm hiểu thêm, bạn có thể truy cập trực tiếp Báo cáo W & B. Để dùng thử Weights & Biases miễn phí, hãy đăng ký tại Trọng số & Thành kiến, Hoặc truy cập vào Danh sách W&B AWS Marketplace.


Về các tác giả

Thomas Capelle là một Kỹ sư Máy học về Trọng lượng và Thành kiến. Anh ấy chịu trách nhiệm giữ cho kho lưu trữ www.github.com/wandb/examples hoạt động và cập nhật. Anh ấy cũng xây dựng nội dung về MLOPS, các ứng dụng của W & B vào các ngành công nghiệp và học sâu thú vị nói chung. Trước đây, ông đã sử dụng học sâu để giải quyết các dự báo ngắn hạn về năng lượng mặt trời. Ông có kiến ​​thức nền tảng về Quy hoạch đô thị, Tối ưu hóa tổ hợp, Kinh tế vận tải và Toán ứng dụng.

Durga Sury là Kiến trúc sư giải pháp ML trong nhóm Amazon SageMaker Service SA. Cô ấy đam mê làm cho việc học máy có thể tiếp cận được với tất cả mọi người. Trong 3 năm làm việc tại AWS, cô đã giúp thiết lập nền tảng AI / ML cho khách hàng doanh nghiệp. Khi không làm việc, cô ấy thích đi xe máy, tiểu thuyết bí ẩn và đi bộ đường dài với chú chó husky bốn tuổi của mình.

Karthik Bharathy là nhà lãnh đạo sản phẩm của Amazon SageMaker với hơn một thập kỷ kinh nghiệm quản lý sản phẩm, chiến lược sản phẩm, thực thi và ra mắt.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?