Khám phá các kỹ thuật nâng cao để tối ưu hóa siêu tham số với Điều chỉnh mô hình tự động của Amazon SageMaker | Dịch vụ web của Amazon

Khám phá các kỹ thuật nâng cao để tối ưu hóa siêu tham số với Điều chỉnh mô hình tự động của Amazon SageMaker | Dịch vụ web của Amazon

Việc tạo ra các giải pháp máy học (ML) hiệu suất cao dựa vào việc khám phá và tối ưu hóa các tham số đào tạo, còn được gọi là siêu tham số. Siêu tham số là các nút bấm và đòn bẩy mà chúng tôi sử dụng để điều chỉnh quá trình đào tạo, chẳng hạn như tốc độ học tập, quy mô lô, cường độ chính quy hóa và các yếu tố khác, tùy thuộc vào mô hình và nhiệm vụ cụ thể trước mắt. Khám phá các siêu tham số liên quan đến việc thay đổi một cách có hệ thống các giá trị của từng tham số và quan sát tác động đến hiệu suất của mô hình. Mặc dù quá trình này đòi hỏi những nỗ lực bổ sung nhưng lợi ích mang lại là rất đáng kể. Tối ưu hóa siêu tham số (HPO) có thể dẫn đến thời gian đào tạo nhanh hơn, độ chính xác của mô hình được cải thiện và khả năng khái quát hóa tốt hơn cho dữ liệu mới.

Chúng tôi tiếp tục cuộc hành trình từ bài đăng Tối ưu hóa siêu đường kính với Amazon SageMaker Automatic Model Tuning. Trước đây chúng tôi đã khám phá một cách tối ưu hóa công việc đơn lẻ, trực quan hóa kết quả cho thuật toán tích hợp SageMaker và tìm hiểu về tác động của các giá trị siêu tham số cụ thể. Ngoài việc sử dụng HPO làm giải pháp tối ưu hóa một lần vào cuối chu kỳ tạo mô hình, chúng tôi cũng có thể sử dụng nó qua nhiều bước theo cách trò chuyện. Mỗi công việc điều chỉnh giúp chúng tôi tiến gần hơn đến hiệu suất tốt, ngoài ra, chúng tôi cũng tìm hiểu mức độ nhạy cảm của mô hình đối với các siêu tham số nhất định và có thể sử dụng sự hiểu biết này để thông báo cho công việc điều chỉnh tiếp theo. Chúng tôi có thể sửa đổi các siêu tham số và phạm vi giá trị của chúng dựa trên những gì chúng tôi đã tìm hiểu và do đó biến nỗ lực tối ưu hóa này thành một cuộc trò chuyện. Và cũng giống như cách chúng tôi, những người thực hành ML, tích lũy kiến ​​thức qua những lần chạy này, Điều chỉnh mô hình tự động Amazon SageMaker (AMT) với khởi động ấm có thể duy trì kiến ​​thức thu được trong các công việc điều chỉnh trước đó cho công việc điều chỉnh tiếp theo.

Trong bài đăng này, chúng tôi chạy nhiều công việc HPO với thuật toán đào tạo tùy chỉnh và các chiến lược HPO khác nhau như tối ưu hóa Bayesian và tìm kiếm ngẫu nhiên. Chúng tôi cũng bắt đầu thực hiện những bước khởi đầu ấm áp và so sánh trực quan các thử nghiệm của mình để tinh chỉnh hoạt động khám phá không gian siêu tham số.

Các khái niệm nâng cao về SageMaker AMT

Trong các phần tiếp theo, chúng ta sẽ xem xét kỹ hơn từng chủ đề sau và chỉ ra cách SageMaker AMT có thể giúp bạn triển khai chúng trong các dự án ML của mình:

  • Sử dụng mã đào tạo tùy chỉnh và khung ML phổ biến Scikit-learn trong chương trình đào tạo SageMaker
  • Xác định số liệu đánh giá tùy chỉnh dựa trên nhật ký để đánh giá và tối ưu hóa
  • Thực hiện HPO bằng chiến lược phù hợp
  • Sử dụng khởi động khởi động để biến một tìm kiếm siêu tham số duy nhất thành một hộp thoại với mô hình của chúng tôi
  • Sử dụng các kỹ thuật trực quan hóa nâng cao bằng thư viện giải pháp của chúng tôi để so sánh hai chiến lược HPO và điều chỉnh kết quả công việc

Cho dù bạn đang sử dụng các thuật toán tích hợp được sử dụng trong bài đăng đầu tiên của chúng tôi hay mã đào tạo của riêng bạn, SageMaker AMT đều mang lại trải nghiệm người dùng liền mạch để tối ưu hóa mô hình ML. Nó cung cấp chức năng chính cho phép bạn tập trung vào vấn đề ML hiện tại trong khi tự động theo dõi các thử nghiệm và kết quả. Đồng thời, nó tự động quản lý cơ sở hạ tầng cơ bản cho bạn.

Trong bài đăng này, chúng tôi loại bỏ thuật toán tích hợp SageMaker và sử dụng mã tùy chỉnh. Chúng tôi sử dụng Rừng ngẫu nhiên từ SkLearn. Nhưng chúng tôi tuân theo cùng một tác vụ và tập dữ liệu ML như trong bài viết đầu tiên, đang phát hiện các chữ số viết tay. Chúng tôi trình bày nội dung của sổ ghi chép Jupyter 2_advanced_tuning_with_custom_training_and_visualizing.ipynb và mời bạn gọi mã cạnh nhau để đọc thêm.

Hãy cùng tìm hiểu sâu hơn và khám phá cách chúng ta có thể sử dụng mã đào tạo tùy chỉnh, triển khai và chạy mã đó, đồng thời khám phá không gian tìm kiếm siêu tham số để tối ưu hóa kết quả của mình.

Cách xây dựng mô hình ML và thực hiện tối ưu hóa siêu tham số

Quy trình điển hình để xây dựng giải pháp ML trông như thế nào? Mặc dù có nhiều trường hợp sử dụng có thể xảy ra và rất nhiều nhiệm vụ ML khác nhau, chúng tôi đề xuất mô hình tinh thần sau đây cho cách tiếp cận từng bước:

  1. Hiểu rõ kịch bản ML của bạn và chọn thuật toán dựa trên yêu cầu. Ví dụ: bạn có thể muốn giải quyết nhiệm vụ nhận dạng hình ảnh bằng thuật toán học có giám sát. Trong bài đăng này, chúng tôi tiếp tục sử dụng kịch bản nhận dạng hình ảnh viết tay và tập dữ liệu tương tự như trong bài đăng đầu tiên của chúng tôi.
  2. Quyết định cách triển khai thuật toán trong chương trình đào tạo SageMaker mà bạn muốn sử dụng. Có nhiều tùy chọn khác nhau, bên trong SageMaker hoặc bên ngoài. Ngoài ra, bạn cần xác định số liệu cơ bản nào phù hợp nhất cho nhiệm vụ của mình và bạn muốn tối ưu hóa (chẳng hạn như độ chính xác, điểm F1 hoặc ROC). SageMaker hỗ trợ bốn tùy chọn tùy thuộc vào nhu cầu và nguồn lực của bạn:
    • Sử dụng mô hình được đào tạo trước thông qua Khởi động Amazon SageMaker, bạn có thể sử dụng ngay hoặc chỉ cần tinh chỉnh nó.
    • Sử dụng một trong các thuật toán tích hợp để đào tạo và điều chỉnh, như XGBoost, như chúng tôi đã làm trong bài đăng trước.
    • Huấn luyện và điều chỉnh mô hình tùy chỉnh dựa trên một trong các khung chính như Scikit-learn, TensorFlow hoặc PyTorch. AWS cung cấp tuyển chọn các hình ảnh Docker được tạo sẵn cho mục đích này. Đối với bài đăng này, chúng tôi sử dụng tùy chọn này, tùy chọn này cho phép bạn thử nghiệm nhanh chóng bằng cách chạy mã của riêng bạn lên trên hình ảnh vùng chứa được tạo sẵn.
    • Mang theo hình ảnh Docker tùy chỉnh của riêng bạn trong trường hợp bạn muốn sử dụng một khung hoặc phần mềm không được hỗ trợ. Tùy chọn này đòi hỏi nhiều nỗ lực nhất nhưng cũng mang lại mức độ linh hoạt và kiểm soát cao nhất.
  3. Huấn luyện mô hình với dữ liệu của bạn. Tùy thuộc vào việc triển khai thuật toán từ bước trước, việc này có thể đơn giản như tham chiếu dữ liệu đào tạo của bạn và chạy công việc đào tạo hoặc bằng cách cung cấp thêm mã tùy chỉnh cho đào tạo. Trong trường hợp của chúng tôi, chúng tôi sử dụng một số mã đào tạo tùy chỉnh bằng Python dựa trên Scikit-learn.
  4. Áp dụng tối ưu hóa siêu tham số (dưới dạng “cuộc trò chuyện” với mô hình ML của bạn). Sau khi đào tạo, bạn thường muốn tối ưu hóa hiệu suất của mô hình bằng cách tìm ra sự kết hợp các giá trị hứa hẹn nhất cho các siêu tham số của thuật toán.

Tùy thuộc vào thuật toán ML và kích thước mô hình của bạn, bước cuối cùng của quá trình tối ưu hóa siêu tham số có thể trở thành một thách thức lớn hơn mong đợi. Các câu hỏi sau đây là điển hình cho những người thực hành ML ở giai đoạn này và có thể quen thuộc với bạn:

  • Loại siêu tham số nào có tác động đến vấn đề ML của tôi?
  • Làm cách nào tôi có thể tìm kiếm một cách hiệu quả một không gian siêu tham số khổng lồ để tìm những giá trị hoạt động tốt nhất đó?
  • Sự kết hợp của các giá trị siêu tham số nhất định ảnh hưởng đến chỉ số hiệu suất của tôi như thế nào?
  • Chi phí quan trọng; làm cách nào tôi có thể sử dụng tài nguyên của mình một cách hiệu quả?
  • Loại thử nghiệm điều chỉnh nào đáng giá và làm cách nào để so sánh chúng?

Thật không dễ để trả lời những câu hỏi này, nhưng có một tin tốt. SageMaker AMT sẽ giảm bớt gánh nặng cho bạn và cho phép bạn tập trung vào việc chọn chiến lược HPO và phạm vi giá trị phù hợp mà bạn muốn khám phá. Ngoài ra, giải pháp trực quan hóa của chúng tôi tạo điều kiện thuận lợi cho quá trình thử nghiệm và phân tích lặp đi lặp lại để tìm ra các giá trị siêu tham số hoạt động tốt một cách hiệu quả.

Trong các phần tiếp theo, chúng tôi xây dựng mô hình nhận dạng chữ số từ đầu bằng cách sử dụng Scikit-learn và hiển thị tất cả các khái niệm này trong thực tế.

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

SageMaker cung cấp một số tính năng rất tiện dụng để đào tạo, đánh giá và điều chỉnh mô hình của chúng tôi. Nó bao gồm tất cả chức năng của vòng đời ML từ đầu đến cuối, vì vậy chúng tôi thậm chí không cần phải rời khỏi sổ ghi chép Jupyter của mình.

Trong bài đăng đầu tiên, chúng tôi đã sử dụng thuật toán XGBoost tích hợp sẵn của SageMaker. Với mục đích trình diễn, lần này chúng tôi chuyển sang trình phân loại Rừng ngẫu nhiên vì sau đó chúng tôi có thể chỉ ra cách cung cấp mã đào tạo của riêng bạn. Chúng tôi đã chọn cung cấp tập lệnh Python của riêng mình và sử dụng Scikit-learn làm khung. Bây giờ, làm cách nào để thể hiện rằng chúng tôi muốn sử dụng một khung ML cụ thể? Như chúng ta sẽ thấy, SageMaker sử dụng một dịch vụ AWS khác ở chế độ nền để truy xuất hình ảnh vùng chứa Docker dựng sẵn cho mục đích đào tạo—Đăng ký container đàn hồi Amazon (ECR của Amazon).

Chúng tôi trình bày chi tiết các bước sau, bao gồm các đoạn mã và sơ đồ để kết nối các điểm. Như đã đề cập trước đó, nếu có cơ hội, hãy mở sổ ghi chép và chạy từng ô mã để tạo thành phần lạ trong môi trường AWS của bạn. Không có cách nào tốt hơn để học tập tích cực.

  1. Đầu tiên, tải và chuẩn bị dữ liệu. Chúng tôi sử dụng Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) để tải lên tệp chứa dữ liệu chữ số viết tay của chúng tôi.
  2. Tiếp theo, chuẩn bị kịch bản đào tạo và các phần phụ thuộc của khung. Chúng tôi cung cấp mã đào tạo tùy chỉnh bằng Python, tham khảo một số thư viện phụ thuộc và chạy thử nghiệm.
  3. Để xác định số liệu mục tiêu tùy chỉnh, SageMaker cho phép chúng tôi xác định biểu thức chính quy để trích xuất số liệu chúng tôi cần từ tệp nhật ký vùng chứa.
  4. Huấn luyện mô hình bằng khung scikit-learn. Bằng cách tham chiếu hình ảnh vùng chứa dựng sẵn, chúng tôi tạo đối tượng Công cụ ước tính tương ứng và chuyển tập lệnh đào tạo tùy chỉnh của mình.
  5. AMT cho phép chúng tôi thử nghiệm nhiều chiến lược HPO khác nhau. Chúng tôi tập trung vào hai trong số chúng cho bài đăng này: tìm kiếm ngẫu nhiên và tìm kiếm Bayes.
  6. Chọn giữa các chiến lược SageMaker HPO.
  7. Trực quan hóa, phân tích và so sánh kết quả điều chỉnh. Gói trực quan hóa của chúng tôi cho phép chúng tôi khám phá chiến lược nào hoạt động tốt hơn và giá trị siêu tham số nào mang lại hiệu suất tốt nhất dựa trên số liệu của chúng tôi.
  8. Tiếp tục khám phá không gian siêu tham số và khởi động các công việc HPO.

AMT đảm nhiệm việc mở rộng quy mô và quản lý cơ sở hạ tầng điện toán cơ bản để chạy các công việc điều chỉnh khác nhau trên Đám mây điện toán đàn hồi Amazon (Amazon EC2). Bằng cách này, bạn không cần phải gánh nặng việc cung cấp phiên bản, xử lý mọi sự cố về hệ điều hành và phần cứng hay tự mình tổng hợp các tệp nhật ký. Hình ảnh khung ML được truy xuất từ ​​Amazon ECR và các tạo phẩm mô hình bao gồm cả kết quả điều chỉnh được lưu trữ trong Amazon S3. Tất cả nhật ký và số liệu được thu thập trong amazoncloudwatch để truy cập thuận tiện và phân tích thêm nếu cần.

Điều kiện tiên quyết

Vì đây là phần tiếp theo của một bộ truyện nên bạn nên đọc nhưng không nhất thiết phải đọc bài đăng đầu tiên của chúng tôi về SageMaker AMT và HPO. Ngoài ra, việc làm quen cơ bản với các khái niệm ML và lập trình Python rất hữu ích. Chúng tôi cũng khuyên bạn nên làm theo từng bước trong sổ tay đi kèm từ kho lưu trữ GitHub của chúng tôi khi đọc bài đăng này. Sổ ghi chép có thể chạy độc lập với sổ ghi chép đầu tiên nhưng cần một số mã từ các thư mục con. Đảm bảo sao chép toàn bộ kho lưu trữ trong môi trường của bạn như được mô tả trong tệp README.

Việc thử nghiệm mã và sử dụng các tùy chọn trực quan tương tác sẽ nâng cao đáng kể trải nghiệm học tập của bạn. Vì vậy, hãy kiểm tra xem nó ra.

Tải và chuẩn bị dữ liệu

Bước đầu tiên, chúng tôi đảm bảo rằng tệp đã tải xuống dữ liệu chữ số chúng tôi cần để đào tạo có thể truy cập được vào SageMaker. Amazon S3 cho phép chúng tôi thực hiện việc này một cách an toàn và có thể mở rộng. Hãy tham khảo sổ ghi chép để biết mã nguồn hoàn chỉnh và thoải mái điều chỉnh nó với dữ liệu của riêng bạn.

sm_sess = sagemaker.session.Session(boto_session=boto_sess, sagemaker_client=sm)
BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
s3_data_url = f's3://{BUCKET}/{PREFIX}/data'
digits = datasets.load_digits()
digits_df = pd.DataFrame(digits.data)
digits_df['y'] = digits.target
digits_df.to_csv('data/digits.csv', index=False)
!aws s3 sync data/ {s3_data_url} —exclude '*' —include 'digits.csv'

Sản phẩm digits.csv tập tin chứa dữ liệu tính năng và nhãn. Mỗi chữ số được biểu thị bằng các giá trị pixel trong hình ảnh 8 × 8, như được mô tả bằng hình ảnh sau đây cho chữ số 4.
Bộ dữ liệu chữ số từ Scikit-learn

Chuẩn bị kịch bản đào tạo và các phần phụ thuộc của khung

Bây giờ dữ liệu đã được lưu trữ trong bộ chứa S3, chúng ta có thể xác định tập lệnh đào tạo tùy chỉnh dựa trên Học hỏi bằng Python. SageMaker cung cấp cho chúng tôi tùy chọn chỉ cần tham chiếu tệp Python sau này để đào tạo. Mọi phần phụ thuộc như thư viện Scikit-learn hoặc pandas đều có thể được cung cấp theo hai cách:

  • Chúng có thể được chỉ định rõ ràng trong một requirements.txt hồ sơ
  • Chúng được cài đặt sẵn trong hình ảnh vùng chứa ML cơ bản, do SageMaker cung cấp hoặc được tạo tùy chỉnh.

Cả hai tùy chọn thường được coi là cách tiêu chuẩn để quản lý phần phụ thuộc, vì vậy bạn có thể đã quen với nó. Hỗ trợ SageMaker nhiều khung ML khác nhau trong một môi trường được quản lý sẵn sàng để sử dụng. Điều này bao gồm nhiều khung ML và khoa học dữ liệu phổ biến nhất như PyTorch, TensorFlow hoặc Scikit-learn, như trong trường hợp của chúng tôi. Chúng tôi không sử dụng thêm requirements.txt nhưng vui lòng thêm một số thư viện để dùng thử.

Mã triển khai của chúng tôi chứa một phương thức gọi là fit(), tạo ra một bộ phân loại mới cho nhiệm vụ nhận dạng chữ số và huấn luyện nó. Ngược lại với bài đăng đầu tiên sử dụng thuật toán XGBoost tích hợp của SageMaker, giờ đây chúng tôi sử dụng một RandomForestClassifier được cung cấp bởi thư viện ML sklearn. Lời kêu gọi của fit() phương thức trên đối tượng phân loại bắt đầu quá trình đào tạo bằng cách sử dụng tập hợp con (80%) dữ liệu CSV của chúng tôi:

def fit(train_dir, n_estimators, max_depth, min_samples_leaf, max_features, min_weight_fraction_leaf): digits = pd.read_csv(Path(train_dir)/'digits.csv') Xtrain, Xtest, ytrain, ytest = train_test_split(digits.iloc[:, :-1], digits.iloc[:, -1], test_size=.2) m = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, min_samples_leaf=min_samples_leaf, max_features=max_features, min_weight_fraction_leaf=min_weight_fraction_leaf) m.fit(Xtrain, ytrain) predicted = m.predict(Xtest) pre, rec, f1, _ = precision_recall_fscore_support(ytest, predicted, pos_label=1, average='weighted') print(f'pre: {pre:5.3f} rec: {rec:5.3f} f1: {f1:5.3}') return m

Xem toàn bộ tập lệnh trong sổ tay Jupyter của chúng tôi trên GitHub.

Trước khi sử dụng tài nguyên vùng chứa cho toàn bộ quá trình đào tạo, bạn đã thử chạy trực tiếp tập lệnh chưa? Đây là một phương pháp hay để nhanh chóng đảm bảo mã không có lỗi cú pháp, kiểm tra sớm các kích thước phù hợp của cấu trúc dữ liệu của bạn và một số lỗi khác.

Có hai cách để chạy mã của bạn cục bộ. Đầu tiên, bạn có thể chạy nó ngay trong sổ ghi chép, điều này cũng cho phép bạn sử dụng Trình gỡ lỗi Python pdb:

# Running the code from within the notebook. It would then be possible to use the Python Debugger, pdb.
from train import fit
fit('data', 100, 10, 1, 'auto', 0.01)

Ngoài ra, hãy chạy tập lệnh train từ dòng lệnh giống như cách bạn có thể muốn sử dụng nó trong vùng chứa. Điều này cũng hỗ trợ thiết lập các tham số khác nhau và ghi đè các giá trị mặc định nếu cần, ví dụ:

!cd src && python train.py --train ../data/ --model-dir /tmp/ --n-estimators 100

Là đầu ra, bạn có thể xem kết quả đầu tiên về hiệu suất của mô hình dựa trên độ chính xác, khả năng thu hồi và điểm F1 của số liệu khách quan. Ví dụ, pre: 0.970 rec: 0.969 f1: 0.969.

Không tệ cho việc đào tạo nhanh chóng như vậy. Nhưng những con số này đến từ đâu và chúng ta phải làm gì với chúng?

Xác định số liệu mục tiêu tùy chỉnh

Hãy nhớ rằng, mục tiêu của chúng tôi là đào tạo và điều chỉnh đầy đủ mô hình của mình dựa trên các số liệu khách quan mà chúng tôi cho là phù hợp với nhiệm vụ của mình. Vì sử dụng tập lệnh đào tạo tùy chỉnh nên chúng tôi cần xác định rõ ràng các số liệu đó cho SageMaker.

Tập lệnh của chúng tôi đưa ra độ chính xác, khả năng thu hồi và điểm F1 của số liệu trong quá trình đào tạo chỉ bằng cách sử dụng print chức năng:

print(f'pre: {pre:5.3f} rec: {rec:5.3f} f1: {f1:5.3}')

Đầu ra tiêu chuẩn được SageMaker ghi lại và gửi tới CloudWatch dưới dạng luồng nhật ký. Để truy xuất các giá trị số liệu và làm việc với chúng sau này trong SageMaker AMT, chúng tôi cần cung cấp một số thông tin về cách phân tích cú pháp đầu ra đó. Chúng ta có thể đạt được điều này bằng cách định nghĩa các câu lệnh biểu thức chính quy (để biết thêm thông tin, hãy tham khảo Theo dõi và phân tích công việc đào tạo bằng cách sử dụng các chỉ số Amazon CloudWatch):

metric_definitions = [ {'Name': 'valid-precision', 'Regex': r'pre:s+(-?[0-9.]+)'}, {'Name': 'valid-recall', 'Regex': r'rec:s+(-?[0-9.]+)'}, {'Name': 'valid-f1', 'Regex': r'f1:s+(-?[0-9.]+)'}] 

Chúng ta hãy cùng nhau tìm hiểu định nghĩa số liệu đầu tiên trong mã trước đó. SageMaker sẽ tìm kiếm đầu ra trong nhật ký bắt đầu bằng pre: và theo sau là một hoặc nhiều khoảng trắng, sau đó là một số mà chúng ta muốn trích xuất, đó là lý do tại sao chúng ta sử dụng dấu ngoặc tròn. Mỗi khi SageMaker tìm thấy một giá trị như vậy, nó sẽ biến giá trị đó thành chỉ số CloudWatch có tên valid-precision.

Huấn luyện mô hình bằng khung Scikit-learn

Sau khi chúng tôi tạo tập lệnh đào tạo của mình train.py và hướng dẫn SageMaker cách giám sát số liệu trong CloudWatch, chúng tôi xác định Công cụ ước tính SageMaker sự vật. Nó bắt đầu công việc đào tạo và sử dụng loại phiên bản mà chúng tôi chỉ định. Nhưng làm thế nào loại phiên bản này có thể khác với loại bạn chạy Xưởng sản xuất Amazon SageMaker bật sổ ghi chép lên và tại sao? SageMaker Studio chạy các công việc đào tạo (và suy luận) của bạn trên các phiên bản điện toán riêng biệt ngoài sổ ghi chép của bạn. Điều này cho phép bạn tiếp tục làm việc trong sổ ghi chép của mình trong khi các công việc chạy ở chế độ nền.

Thông số framework_version đề cập đến phiên bản Scikit-learn mà chúng tôi sử dụng cho công việc đào tạo của mình. Ngoài ra, chúng ta có thể vượt qua image_uri đến estimator. Bạn có thể kiểm tra xem khung hoặc thư viện ML yêu thích của bạn có sẵn dưới dạng không Hình ảnh Docker SageMaker dựng sẵn và sử dụng nó như là hoặc với phần mở rộng.

Hơn nữa, chúng tôi có thể chạy các công việc đào tạo SageMaker trên Phiên bản dùng ngay EC2 bằng cách cài đặt use_spot_instances đến True. Chúng là những trường hợp dung lượng dự phòng có thể tiết kiệm tới 90% chi phí. Những phiên bản này cung cấp sự linh hoạt khi chạy công việc đào tạo.

estimator = SKLearn( 'train.py', source_dir='src', role=get_execution_role(), instance_type= 'ml.m5.large', instance_count=1, framework_version='0.23-1', metric_definitions=metric_definitions, # Uncomment the following three lines to use Managed Spot Training # use_spot_instances= True, # max_run= 60 * 60 * 24, # max_wait= 60 * 60 * 24, hyperparameters = {'n-estimators': 100, 'max-depth': 10, 'min-samples-leaf': 1, 'max-features': 'auto', 'min-weight-fraction-leaf': 0.1}
)

Sau khi đối tượng Ước tính được thiết lập, chúng ta bắt đầu đào tạo bằng cách gọi fit() chức năng, cung cấp đường dẫn đến tập dữ liệu huấn luyện trên Amazon S3. Chúng ta có thể sử dụng phương pháp tương tự này để cung cấp dữ liệu xác thực và kiểm tra. Chúng tôi thiết lập wait tham số để True để chúng ta có thể sử dụng mô hình đã huấn luyện trong các ô mã tiếp theo.

estimator.fit({'train': s3_data_url}, wait=True)

Xác định siêu tham số và chạy công việc điều chỉnh

Cho đến nay, chúng ta đã huấn luyện mô hình với một tập hợp các giá trị siêu tham số. Nhưng những giá trị đó có tốt không? Hoặc chúng ta có thể tìm kiếm những cái tốt hơn? Hãy sử dụng Lớp siêu tham sốTuner để thực hiện tìm kiếm có hệ thống trên không gian siêu tham số. Làm cách nào để chúng tôi tìm kiếm không gian này bằng bộ chỉnh sóng? Các tham số cần thiết là tên số liệu mục tiêu và loại mục tiêu sẽ hướng dẫn tối ưu hóa. Chiến lược tối ưu hóa là một đối số quan trọng khác của bộ điều chỉnh vì nó xác định thêm không gian tìm kiếm. Sau đây là bốn chiến lược khác nhau để bạn lựa chọn:

  • Tìm kiếm lưới
  • Tìm kiếm ngẫu nhiên
  • Tối ưu hóa Bayes (mặc định)
  • Siêu băng thông

Chúng tôi mô tả thêm về các chiến lược này và trang bị cho bạn một số hướng dẫn để chọn một chiến lược sau trong bài đăng này.

Trước khi xác định và chạy đối tượng điều chỉnh, hãy tóm tắt lại hiểu biết của chúng ta từ góc độ kiến ​​trúc. Chúng tôi đã trình bày tổng quan về kiến ​​trúc của SageMaker AMT trong bài viết cuối cùng của chúng tôi và sao chép một đoạn trích của nó ở đây để thuận tiện.

Kiến trúc điều chỉnh mô hình tự động của Amazon SageMaker

Chúng ta có thể chọn siêu tham số nào chúng ta muốn điều chỉnh hoặc để tĩnh. Đối với các siêu tham số động, chúng tôi cung cấp hyperparameter_ranges có thể được sử dụng để tối ưu hóa cho các siêu tham số có thể điều chỉnh được. Bởi vì chúng tôi sử dụng bộ phân loại Rừng ngẫu nhiên nên chúng tôi đã sử dụng các siêu tham số từ Tài liệu Rừng ngẫu nhiên Scikit-learn.

Chúng tôi cũng giới hạn nguồn lực với số lượng công việc đào tạo tối đa và công việc đào tạo song song mà bộ điều chỉnh có thể sử dụng. Chúng ta sẽ thấy những giới hạn này giúp chúng ta so sánh kết quả của các chiến lược khác nhau với nhau như thế nào.

tuner_parameters = { 'estimator': estimator, 'base_tuning_job_name': 'random', 'metric_definitions': metric_definitions, 'objective_metric_name': 'valid-f1', 'objective_type': 'Maximize', 'hyperparameter_ranges': hpt_ranges, 'strategy': 'Random', 'max_jobs': n, # 50 'max_parallel_jobs': k # 2 } 

Tương tự với Estimator fit chức năng, chúng tôi bắt đầu công việc điều chỉnh gọi bộ điều chỉnh fit:

random_tuner = HyperparameterTuner(**tuner_parameters)
random_tuner.fit({'train': s3_data_url}, wait=False)

Đây là tất cả những gì chúng ta phải làm để SageMaker thực hiện các công việc đào tạo (n=50) ở chế độ nền, mỗi tham số sử dụng một bộ siêu tham số khác nhau. Chúng tôi khám phá kết quả sau trong bài viết này. Nhưng trước đó, hãy bắt đầu một công việc điều chỉnh khác, lần này áp dụng chiến lược tối ưu hóa Bayes. Chúng tôi sẽ so sánh trực quan cả hai chiến lược sau khi hoàn thành.

tuner_parameters['strategy'] = 'Bayesian'
tuner_parameters['base_tuning_job_name'] = 'bayesian'
bayesian_tuner = HyperparameterTuner(**tuner_parameters)
bayesian_tuner.fit({'train': s3_data_url}, wait=False)

Lưu ý rằng cả hai công việc điều chỉnh đều có thể chạy song song vì SageMaker sắp xếp các phiên bản điện toán cần thiết độc lập với nhau. Điều đó khá hữu ích cho những học viên thử nghiệm nhiều phương pháp tiếp cận khác nhau cùng lúc, giống như chúng tôi làm ở đây.

Chọn giữa các chiến lược SageMaker HPO

Khi nói đến chiến lược điều chỉnh, bạn có một số tùy chọn với SageMaker AMT: tìm kiếm dạng lưới, tìm kiếm ngẫu nhiên, tối ưu hóa Bayesian và Hyperband. Các chiến lược này xác định cách các thuật toán điều chỉnh tự động khám phá phạm vi siêu tham số được chỉ định.

Tìm kiếm ngẫu nhiên khá đơn giản. Nó chọn ngẫu nhiên các kết hợp giá trị từ các phạm vi được chỉ định và có thể chạy theo cách tuần tự hoặc song song. Nó giống như việc bị bịt mắt ném phi tiêu với hy vọng bắn trúng mục tiêu. Chúng tôi đã bắt đầu với chiến lược này, nhưng liệu kết quả có cải thiện với chiến lược khác không?

Tối ưu hóa Bayes có cách tiếp cận khác với tìm kiếm ngẫu nhiên. Nó xem xét lịch sử của các lựa chọn trước đó và chọn các giá trị có khả năng mang lại kết quả tốt nhất. Nếu muốn học hỏi từ những khám phá trước đó, bạn chỉ có thể đạt được điều này bằng cách chạy công việc điều chỉnh mới sau những công việc trước đó. Có ý nghĩa, phải không? Theo cách này, tối ưu hóa Bayes phụ thuộc vào các lần chạy trước. Nhưng bạn có thấy chiến lược HPO nào cho phép khả năng song song hóa cao hơn không?

Siêu băng thông là một điều thú vị! Nó sử dụng chiến lược đa độ trung thực, có nghĩa là nó phân bổ linh hoạt các nguồn lực cho các công việc đào tạo hứa hẹn nhất và ngăn chặn những công việc kém hiệu quả. Do đó, Hyperband có hiệu quả tính toán với các tài nguyên, học hỏi từ các công việc đào tạo trước đó. Sau khi dừng các cấu hình hoạt động kém, một cấu hình mới sẽ khởi động và các giá trị của nó được chọn ngẫu nhiên.

Tùy thuộc vào nhu cầu và tính chất mô hình của bạn, bạn có thể chọn giữa tìm kiếm ngẫu nhiên, tối ưu hóa Bayes hoặc Hyperband làm chiến lược điều chỉnh của mình. Mỗi cách đều có cách tiếp cận và ưu điểm riêng, vì vậy điều quan trọng là phải xem xét cách nào phù hợp nhất cho việc khám phá ML của bạn. Tin vui cho những người thực hành ML là bạn có thể chọn chiến lược HPO tốt nhất bằng cách so sánh trực quan tác động của từng thử nghiệm đối với chỉ số khách quan. Trong phần tiếp theo, chúng ta sẽ thấy cách xác định trực quan tác động của các chiến lược khác nhau.

Trực quan hóa, phân tích và so sánh kết quả điều chỉnh

Khi công việc điều chỉnh của chúng tôi hoàn tất, nó sẽ trở nên thú vị. Họ mang lại kết quả gì? Bạn có thể mong đợi mức tăng nào về chỉ số của chúng tôi so với mô hình cơ sở của bạn? Các siêu tham số hoạt động tốt nhất cho trường hợp sử dụng của chúng tôi là gì?

Cách nhanh chóng và đơn giản để xem kết quả HPO là truy cập bảng điều khiển SageMaker. Dưới Công việc điều chỉnh siêu tham số, chúng tôi có thể thấy (mỗi công việc điều chỉnh) sự kết hợp của các giá trị siêu tham số đã được kiểm tra và mang lại hiệu suất tốt nhất được đo bằng số liệu khách quan của chúng tôi (valid-f1).

Số liệu cho công việc điều chỉnh siêu tham số

Đó có phải là tất cả những gì bạn cần? Là người thực hành ML, bạn có thể không chỉ quan tâm đến những giá trị đó mà chắc chắn muốn tìm hiểu thêm về hoạt động bên trong mô hình của mình để khám phá toàn bộ tiềm năng của nó và củng cố trực giác của bạn bằng phản hồi thực nghiệm.

Một công cụ trực quan hóa tốt có thể giúp bạn hiểu rõ sự cải tiến của HPO theo thời gian và nhận được phản hồi thực nghiệm về các quyết định thiết kế mô hình ML của bạn. Nó cho thấy tác động của từng siêu tham số riêng lẻ lên số liệu mục tiêu của bạn và cung cấp hướng dẫn để tối ưu hóa hơn nữa kết quả điều chỉnh của bạn.

Chúng tôi sử dụng amtviz gói trực quan hóa tùy chỉnh để trực quan hóa và phân tích các công việc điều chỉnh. Nó đơn giản để sử dụng và cung cấp các tính năng hữu ích. Chúng tôi chứng minh lợi ích của nó bằng cách diễn giải một số biểu đồ riêng lẻ và cuối cùng so sánh tìm kiếm ngẫu nhiên song song với tối ưu hóa Bayes.

Đầu tiên, hãy tạo một hình ảnh trực quan cho tìm kiếm ngẫu nhiên. Chúng ta có thể làm điều này bằng cách gọi visualize_tuning_job() từ amtviz và chuyển đối tượng điều chỉnh đầu tiên của chúng tôi làm đối số:

from amtviz import visualize_tuning_job
visualize_tuning_job(random_tuner, advanced=True, trials_only=True)

Bạn sẽ thấy một vài biểu đồ, nhưng hãy thực hiện từng bước một. Biểu đồ phân tán đầu tiên từ đầu ra trông giống như sau và đã cung cấp cho chúng ta một số manh mối trực quan mà chúng ta sẽ không nhận ra trong bất kỳ bảng nào.

Kết quả công việc tối ưu hóa siêu tham số

Mỗi dấu chấm thể hiện hiệu suất của một công việc đào tạo cá nhân (mục tiêu của chúng tôi valid-f1 trên trục y) dựa trên thời gian bắt đầu (trục x), được tạo bởi một tập hợp siêu tham số cụ thể. Do đó, chúng tôi xem xét hiệu suất của mô hình khi nó tiến triển trong suốt thời gian thực hiện công việc điều chỉnh.

Đường chấm chấm làm nổi bật kết quả tốt nhất được tìm thấy cho đến nay và cho thấy sự cải thiện theo thời gian. Hai công việc đào tạo tốt nhất đều đạt điểm F1 khoảng 0.91.

Ngoài đường chấm chấm hiển thị tiến trình tích lũy, bạn có thấy xu hướng nào trên biểu đồ không?

Chắc là không. Và điều này được mong đợi vì chúng ta đang xem kết quả của chiến lược HPO ngẫu nhiên. Mỗi công việc đào tạo được thực hiện bằng cách sử dụng một bộ siêu tham số khác nhau nhưng được chọn ngẫu nhiên. Nếu chúng tôi tiếp tục công việc điều chỉnh của mình (hoặc chạy một công việc khác có cùng cài đặt), chúng tôi có thể sẽ thấy một số kết quả tốt hơn theo thời gian, nhưng chúng tôi không thể chắc chắn. Sự ngẫu nhiên là một điều khó khăn.

Các biểu đồ tiếp theo giúp bạn đánh giá mức độ ảnh hưởng của siêu tham số đến hiệu suất tổng thể. Tất cả các siêu tham số đều được trực quan hóa, nhưng để ngắn gọn, chúng tôi tập trung vào hai trong số chúng: n-estimatorsmax-depth.

Chi tiết công việc siêu tham số

Hai công việc đào tạo hàng đầu của chúng tôi đang sử dụng n-estimators khoảng 20 và 80, và max-depth tương ứng là khoảng 10 và 18. Các giá trị siêu tham số chính xác được hiển thị thông qua chú giải công cụ cho từng dấu chấm (công việc đào tạo). Chúng thậm chí còn được đánh dấu động trên tất cả các biểu đồ và cung cấp cho bạn cái nhìn đa chiều! Bạn có thấy điều đó không? Mỗi siêu tham số được vẽ theo chỉ số khách quan dưới dạng một biểu đồ riêng biệt.

Bây giờ, chúng ta có được những hiểu biết gì về n-estimators?

Dựa trên biểu đồ bên trái, có vẻ như các phạm vi giá trị rất thấp (dưới 10) thường mang lại kết quả kém hơn so với các giá trị cao hơn. Do đó, giá trị cao hơn có thể giúp mô hình của bạn hoạt động tốt hơn—thật thú vị.

Ngược lại, mối tương quan của max-depth siêu tham số so với số liệu mục tiêu của chúng tôi khá thấp. Chúng tôi không thể biết rõ phạm vi giá trị nào đang hoạt động tốt hơn từ góc độ chung.

Tóm lại, tìm kiếm ngẫu nhiên có thể giúp bạn tìm thấy một tập hợp siêu tham số hoạt động tốt ngay cả trong một khoảng thời gian tương đối ngắn. Ngoài ra, nó không thiên về một giải pháp tốt mà mang lại cái nhìn cân bằng về không gian tìm kiếm. Tuy nhiên, việc sử dụng tài nguyên của bạn có thể không hiệu quả lắm. Nó tiếp tục chạy các công việc đào tạo với siêu tham số trong phạm vi giá trị được biết là mang lại kết quả kém.

Hãy xem xét kết quả của công việc điều chỉnh thứ hai bằng cách sử dụng tối ưu hóa Bayes. Chúng ta có thể sử dụng amtviz để trực quan hóa kết quả theo cách tương tự như chúng tôi đã làm cho đến nay đối với bộ điều chỉnh tìm kiếm ngẫu nhiên. Hoặc thậm chí tốt hơn, chúng ta có thể sử dụng khả năng của hàm để so sánh cả hai công việc điều chỉnh trong một bộ biểu đồ. Khá tiện dụng!

visualize_tuning_job([random_tuner, bayesian_tuner], advanced=True, trials_only=True)

Công việc tối ưu hóa siêu tham số Bayesian VS Random

Hiện tại có nhiều dấu chấm hơn vì chúng tôi trực quan hóa kết quả của tất cả công việc đào tạo cho cả tìm kiếm ngẫu nhiên (dấu chấm màu cam) và tối ưu hóa Bayesian (dấu chấm màu xanh lam). Ở bên phải, bạn có thể thấy biểu đồ mật độ trực quan hóa sự phân bổ của tất cả các điểm F1. Phần lớn các công việc đào tạo đều đạt kết quả ở phần trên của thang điểm F1 (trên 0.6) - thật tốt!

Điểm mấu chốt ở đây là gì? Biểu đồ phân tán cho thấy rõ lợi ích của việc tối ưu hóa Bayes. Nó mang lại kết quả tốt hơn theo thời gian vì nó có thể học hỏi từ những lần chạy trước. Đó là lý do tại sao chúng tôi đạt được kết quả tốt hơn đáng kể khi sử dụng Bayesian so với ngẫu nhiên (0.967 so với 0.919) với cùng số lượng công việc đào tạo.

Thậm chí còn có nhiều điều bạn có thể làm với amtviz. Hãy đi sâu vào.

Nếu bạn cung cấp cho SageMaker AMT hướng dẫn chạy số lượng công việc lớn hơn để điều chỉnh, thì việc xem nhiều bản thử cùng một lúc có thể trở nên lộn xộn. Đó là một trong những lý do tại sao chúng tôi làm cho những biểu đồ này có tính tương tác. Bạn có thể nhấp và kéo trên mỗi biểu đồ phân tán siêu tham số để phóng to các phạm vi giá trị nhất định và tinh chỉnh cách diễn giải kết quả trực quan của bạn. Tất cả các biểu đồ khác đều được cập nhật tự động. Điều đó khá hữu ích phải không? Hãy xem các biểu đồ tiếp theo làm ví dụ và tự mình thử nó vào sổ tay của bạn!

Tính năng trực quan hóa công việc tối ưu hóa siêu tham số

Với tư cách là người theo chủ nghĩa tối đa hóa điều chỉnh, bạn cũng có thể quyết định rằng việc chạy một công việc điều chỉnh siêu tham số khác có thể cải thiện hơn nữa hiệu suất mô hình của bạn. Nhưng lần này, bạn có thể khám phá phạm vi giá trị siêu tham số cụ thể hơn vì bạn đã biết (đại khái) nơi mong đợi kết quả tốt hơn. Ví dụ: bạn có thể chọn tập trung vào các giá trị trong khoảng 100–200 cho n-estimators, như thể hiện trong biểu đồ. Điều này cho phép AMT tập trung vào các công việc đào tạo hứa hẹn nhất và tăng hiệu quả điều chỉnh của bạn.

Tóm lại, amtviz cung cấp cho bạn một bộ khả năng trực quan hóa phong phú cho phép bạn hiểu rõ hơn về tác động của các siêu tham số của mô hình đối với hiệu suất và đưa ra các quyết định thông minh hơn trong các hoạt động điều chỉnh của bạn.

Tiếp tục khám phá không gian siêu tham số và khởi động các công việc HPO

Chúng ta đã thấy rằng AMT giúp chúng ta khám phá không gian tìm kiếm siêu tham số một cách hiệu quả. Nhưng điều gì sẽ xảy ra nếu chúng ta cần điều chỉnh nhiều lần để liên tục cải thiện kết quả của mình? Như đã đề cập ở phần đầu, chúng tôi muốn thiết lập một chu trình phản hồi tối ưu hóa—“cuộc trò chuyện” của chúng tôi với mô hình. Chúng ta có cần phải bắt đầu lại từ đầu mọi lúc không?

Chúng ta hãy xem xét khái niệm điều hành một công việc điều chỉnh siêu tham số khởi động ấm. Nó không bắt đầu các công việc điều chỉnh mới từ đầu mà nó sử dụng lại những gì đã học được trong các lần chạy HPO trước đó. Điều này giúp chúng tôi sử dụng thời gian điều chỉnh và tài nguyên điện toán hiệu quả hơn. Chúng tôi có thể lặp lại thêm trên các kết quả trước đó của chúng tôi. Để sử dụng khởi động ấm, chúng tôi tạo một WarmStartConfig và chỉ định warm_start_type as IDENTICAL_DATA_AND_ALGORITHM. Điều này có nghĩa là chúng tôi thay đổi giá trị siêu tham số nhưng không thay đổi dữ liệu hoặc thuật toán. Chúng tôi yêu cầu AMT chuyển kiến ​​thức trước đó sang công việc điều chỉnh mới của chúng tôi.

Bằng cách tham khảo các công việc điều chỉnh tìm kiếm ngẫu nhiên và tối ưu hóa Bayesian trước đây của chúng tôi như parents, chúng ta có thể sử dụng cả hai để bắt đầu ấm áp:

warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents=[bayesian_tuner_name, random_tuner_name])
tuner_parameters['warm_start_config'] = warm_start_config

Để thấy lợi ích của việc sử dụng khởi động ấm, hãy tham khảo biểu đồ sau. Chúng được tạo ra bởi amtviz theo cách tương tự như chúng tôi đã làm trước đó, nhưng lần này chúng tôi đã thêm một công việc điều chỉnh khác dựa trên sự khởi đầu ấm áp.

Khởi động công việc tối ưu hóa siêu tham số

Trong biểu đồ bên trái, chúng ta có thể quan sát thấy các công việc điều chỉnh mới chủ yếu nằm ở góc trên bên phải của biểu đồ chỉ số hiệu suất (xem các dấu chấm được đánh dấu màu cam). Sự khởi đầu ấm áp thực sự đã sử dụng lại các kết quả trước đó, đó là lý do tại sao những điểm dữ liệu đó nằm trong kết quả hàng đầu về điểm F1. Sự cải thiện này cũng được phản ánh trong biểu đồ mật độ ở bên phải.

Nói cách khác, AMT tự động chọn các bộ giá trị siêu tham số đầy hứa hẹn dựa trên kiến ​​thức của nó từ các thử nghiệm trước đó. Điều này được thể hiện trong biểu đồ tiếp theo. Ví dụ: thuật toán sẽ kiểm tra giá trị thấp cho n-estimators ít thường xuyên hơn vì những điều này được biết là tạo ra điểm F1 kém. Chúng tôi không lãng phí bất kỳ nguồn lực nào vào việc đó nhờ vào sự khởi đầu nồng nhiệt.

Công việc trực quan hóa tối ưu hóa siêu tham số

Làm sạch

Để tránh phát sinh các chi phí không mong muốn khi bạn hoàn thành thử nghiệm với HPO, bạn phải xóa tất cả các tệp trong bộ chứa S3 của mình bằng tiền tố amt-visualize-demo và cũng tắt tài nguyên SageMaker Studio.

Chạy đoạn mã sau vào sổ ghi chép của bạn để xóa tất cả các tệp S3 khỏi bài đăng này:

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

Nếu bạn muốn giữ các tập dữ liệu hoặc tạo tác mô hình, bạn có thể sửa đổi tiền tố trong mã thành amt-visualize-demo/data để chỉ xóa dữ liệu hoặc amt-visualize-demo/output để chỉ xóa các tạo tác mô hình.

Kết luận

Chúng tôi đã tìm hiểu nghệ thuật xây dựng giải pháp ML liên quan đến việc khám phá và tối ưu hóa siêu tham số như thế nào. Việc điều chỉnh các nút bấm và đòn bẩy đó là một quá trình đòi hỏi khắt khe nhưng bổ ích, dẫn đến thời gian đào tạo nhanh hơn, độ chính xác của mô hình được cải thiện và các giải pháp ML tổng thể tốt hơn. Chức năng SageMaker AMT giúp chúng tôi chạy nhiều công việc điều chỉnh và khởi động chúng, đồng thời cung cấp các điểm dữ liệu để xem xét thêm, so sánh trực quan và phân tích.

Trong bài đăng này, chúng tôi đã xem xét các chiến lược HPO mà chúng tôi sử dụng với SageMaker AMT. Chúng tôi bắt đầu với tìm kiếm ngẫu nhiên, một chiến lược đơn giản nhưng hiệu quả trong đó các siêu tham số được lấy mẫu ngẫu nhiên từ không gian tìm kiếm. Tiếp theo, chúng tôi so sánh kết quả với tối ưu hóa Bayesian, sử dụng các mô hình xác suất để hướng dẫn tìm kiếm các siêu tham số tối ưu. Sau khi xác định chiến lược HPO phù hợp và phạm vi giá trị siêu tham số tốt thông qua các thử nghiệm ban đầu, chúng tôi đã chỉ ra cách sử dụng khởi đầu khởi động để hợp lý hóa các công việc HPO trong tương lai.

Bạn có thể khám phá không gian tìm kiếm siêu tham số bằng cách so sánh các kết quả định lượng. Chúng tôi đã đề xuất so sánh trực quan song song và cung cấp gói cần thiết để khám phá tương tác. Hãy cho chúng tôi biết trong phần nhận xét rằng nó hữu ích như thế nào đối với bạn trong hành trình điều chỉnh siêu tham số!


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

Uemit YoldasÜmit Yoldas là Kiến trúc sư giải pháp cấp cao của Amazon Web Services. Anh ấy làm việc với các khách hàng doanh nghiệp thuộc nhiều ngành công nghiệp ở Đức. Anh ấy mong muốn biến các khái niệm AI thành các giải pháp trong thế giới thực. Ngoài công việc, anh ấy tận hưởng thời gian bên gia đình, thưởng thức những món ăn ngon và theo đuổi việc tập thể dục.

Elina LesykElina Lesyk là Kiến trúc sư Giải pháp có trụ sở tại Munich. Cô đang tập trung vào khách hàng doanh nghiệp từ ngành dịch vụ tài chính. Trong thời gian rảnh rỗi, bạn có thể tìm thấy Elina xây dựng các ứng dụng với AI tổng hợp tại một số cuộc gặp gỡ CNTT, đưa ra ý tưởng mới về cách khắc phục nhanh chóng biến đổi khí hậu hoặc chạy trong rừng để chuẩn bị cho một nửa chặng đua với độ lệch điển hình so với lịch trình đã định.

trại MarianoMariano Kamp là Kiến trúc sư giải pháp chính của Amazon Web Services. Anh làm việc với các ngân hàng và công ty bảo hiểm ở Đức về học máy. Khi rảnh rỗi, Mariano thích đi bộ đường dài cùng vợ.

Dấu thời gian:

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