Tìm kiếm các lần chạy trong MLflow

Tim Kiem Cac Lan Chay Trong Mlflow



Để theo dõi và quản lý các thử nghiệm học máy, MLflow cung cấp một nền tảng mở rộng. Khả năng tìm kiếm lượt chạy là một trong những tính năng chính của MLflow. Điều này giúp có thể xác định các thử nghiệm đã phát triển và sắp xếp chúng theo cách giúp việc xác định thông tin trở nên đơn giản bất cứ khi nào cần. Chúng tôi có thể tìm kiếm các lượt chạy bằng API tìm kiếm MLflow bằng một số tiêu chí khác nhau, có thể bao gồm những tiêu chí sau:
  • ID hoặc tên thử nghiệm
  • ID chạy
  • Thông số và giá trị
  • Số liệu và Giá trị
  • Thẻ
  • Các thuộc tính khác có liên quan đến các lần chạy

Các lần chạy có thể được lọc theo trạng thái, thời gian bắt đầu, thời gian kết thúc và thời lượng bằng cách sử dụng API tìm kiếm MLflow. Nó giúp dễ dàng hơn trong việc lọc qua nhiều lần chạy và tìm các lần chạy cụ thể mà người dùng quan tâm.

Chức năng tìm kiếm MLflow

Sử dụng hàm mlflow.search_runs() để truy cập API tìm kiếm MLflow. Hàm này chấp nhận nhiều đối số như sau:







  • ID hoặc tên thử nghiệm
  • Lọc chuỗi hoặc văn bản
  • Số lần chạy tối đa cần trả về được chỉ định bởi đối số max_results

Một biến thể đơn giản của mệnh đề WHERE (Ngôn ngữ truy vấn có cấu trúc) SQL là chuỗi hoặc văn bản bộ lọc. Nó có thể được sử dụng để chỉ ra các tiêu chí mà chúng ta muốn sắp xếp các lần chạy.



Cú pháp của hàm MLflow Search_Runs()

ID thực tế hoặc tên của thử nghiệm mà chúng tôi muốn tìm kiếm trong đó phải được thay thế cho “experiment_id hoặc Experiment_name” trong ví dụ sau. Biến search_criteria cho phép nhập tiêu chí tìm kiếm theo ý muốn. Các tiêu chí này có thể được xác định bằng số liệu, thẻ, thông số hoặc đặc điểm bổ sung. Cú pháp cơ bản của hàm search_runs() như sau:



# Nhập API tìm kiếm mlflow để sử dụng hàm search_runs

nhập khẩu dòng chảy

# Cung cấp một số id hoặc tên Thử nghiệm (không bắt buộc; )

exp_id = 'ID hoặc TÊN thử nghiệm'

# Xác định tiêu chí tìm kiếm cho các lần chạy

chuỗi tìm kiếm = 'metrics.accuracy > 0,8 VÀ params.learning_rate = '0,01' AND params.efficiency_rate > '80''

# Thực hiện tìm kiếm

chạy = mlflow. tìm_chạy ( thử nghiệm_ids = exp_id , chuỗi_bộ lọc = chuỗi tìm kiếm )

#Hiển thị kết quả

in ( 'Kết quả tìm kiếm:' )

in ( chạy )

Chạy tìm kiếm bằng nhiều tiêu chí

1. Tìm kiếm theo giá trị số liệu

Các lần chạy có thể được lọc theo giá trị của số liệu cụ thể bằng cách sử dụng trường số liệu trong API tìm kiếm MLflow. Một tập hợp các tên chỉ số được phân tách bằng dấu phẩy sẽ xuất hiện trong trường chỉ số. Ví dụ: chuỗi bộ lọc sau định vị tất cả các lần chạy có giá trị chính xác lớn hơn 0,9:





số liệu. sự chính xác > 0,9

Danh sách đầy đủ các số liệu có sẵn để sử dụng trong trường số liệu được cung cấp như sau:

  • sự chính xác
  • auc
  • f1
  • độ chính xác
  • nhớ lại
  • bản đồ
  • logloss
  • lỗi phân loại
  • multi_class_logloss

Ngoài ra, người dùng có thể lọc các lần chạy theo phạm vi giá trị của số liệu bằng cách sử dụng trường số liệu. Ví dụ: chuỗi bộ lọc tiếp theo định vị tất cả các lần chạy có thước đo độ chính xác với giá trị trong khoảng từ 0,4 đến 0,8:



số liệu. sự chính xác GIỮA 0,4 0,8

Trong trường số liệu, toán tử AND và OR kết hợp các số liệu để tìm các lần chạy có độ chính xác của số liệu và giá trị f1 trên 0,3 và 0,8:

số liệu. sự chính xác > 0,3 VÀ số liệu. f1 > 0,8

2. Tìm kiếm theo giá trị tham số

Tận dụng trường thông số trong API tìm kiếm MLflow để thực hiện tìm kiếm theo giá trị tham số. Tên và giá trị tham số được liệt kê trong trường thông số bằng dấu phẩy. Trong ví dụ này, chuỗi bộ lọc nói trên định vị tất cả các lần chạy có tham số num_boost_round có giá trị 100:

thông số. num_boost_round = '100'

Một số ví dụ khác về chuỗi tìm kiếm các giá trị tham số:

  • params.num_boost_round = 900
  • params.learning_rate GIỮA 0,001 VÀ 0,01
  • params.num_boost_round=’70’ VÀ params.learning_rate=’0,01′

3. Tìm kiếm theo Thẻ

Dưới đây là ví dụ về tìm kiếm sử dụng thẻ:

tiêu chí tìm kiếm = 'tags.mlflow.source.type = 'từ điển''

Ví dụ về các giá trị ma trận và tham số để thực hiện hàm Mlflow.search_runs()

Hãy xem xét ví dụ về thiết lập thử nghiệm MLflow, ghi nhật ký các lần chạy và sau đó sử dụng mlflow.search_runs() để bắt đầu tìm kiếm. Để hiểu hoàn toàn mã, hãy làm theo các bước sau:

Bước 1: Tạo thử nghiệm MLflow

Chúng tôi bắt đầu bằng cách thiết lập thử nghiệm MLflow. Nó tìm nạp thử nghiệm hiện có nếu thử nghiệm đó đã tồn tại. Nếu không, nó sẽ tạo một cái mới.

Giải thích mã:

Thư viện MLflow được nhập ở dòng đầu tiên của mã và tên_thử nghiệm được đặt thành “Thử nghiệm MLflow đầu tiên của tôi” ở dòng tiếp theo. Khi tên_thử nghiệm được chuyển tới hàm “mlflow.get_experiment_by_name”, hàm đó trả về “Không” nếu thử nghiệm không tồn tại và ngược lại là đối tượng của thử nghiệm.

Kiểm tra sự tồn tại của thí nghiệm trong câu lệnh điều kiện. Nếu thử nghiệm đã tồn tại, hãy đặt Experiment_id. Nếu không, hãy sử dụng “mlflow.create_experiment” để tạo thử nghiệm mới. ID thử nghiệm được trả về bởi hàm này. Hiển thị ID thử nghiệm trên bảng điều khiển hoặc màn hình thiết bị đầu cuối khi kết thúc thử nghiệm. Sao chép đoạn mã sau vào notepad và lưu tệp với tên mong muốn và có đuôi “.py”:

# nhập thư viện mlflow

nhập khẩu dòng chảy

# Tạo hoặc tìm nạp thử nghiệm

tên kinh nghiệm = 'Thử nghiệm MLflow đầu tiên của tôi'

# Tìm nạp thử nghiệm theo tên bằng hàm mlflow get_experiment_by_name

điểm kinh nghiệm = mlflow. get_experiment_by_name ( tên kinh nghiệm )

# Kiểm tra xem thử nghiệm chưa tồn tại

nếu như điểm kinh nghiệm Không có :

# Tạo Thử nghiệm mới và chuyển tên thử nghiệm cho hàm mlflow.create_experiment

exp_id = mlflow. tạo_thử nghiệm ( tên kinh nghiệm )

# Hiển thị thông báo thành công trên màn hình

in ( 'Thử nghiệm không tồn tại. Thử nghiệm được tạo thành công!' )

khác :

# Tìm nạp Experiment_id của thử nghiệm hiện tại

exp_id = exp. thử nghiệm_id

in ( 'Thí nghiệm đã tồn tại!' )

# Hiển thị ID thử nghiệm

in ( 'ID thử nghiệm:' , exp_id )

Bây giờ, hãy khởi chạy chương trình trong dấu nhắc lệnh hoặc cửa sổ đầu cuối bằng trình biên dịch Python và nhập “Python” rồi nhập tên tệp, trong trường hợp này là “MyFirstMlflowExperiment.py”. Khi thử nghiệm được chạy lần đầu tiên, nó vẫn chưa tồn tại. Do đó, MLFlow tạo một ID thử nghiệm và in ID thử nghiệm trên màn hình bảng điều khiển:

Chạy lại mã để xác minh rằng nó không tạo thử nghiệm mới và hiển thị ID của những thử nghiệm đã tồn tại. Ảnh chụp màn hình sau đây cho thấy thử nghiệm đã tồn tại:

Bước 2: Ghi nhật ký các lần chạy bằng số liệu và thông số

Bây giờ chúng ta hãy thử ghi lại một số lần chạy với số liệu và thông số cho thử nghiệm vừa thiết lập. Trong tình huống thực tế, chúng tôi phát triển các mô hình học máy và ghi lại thông tin liên quan, chẳng hạn như số liệu và thông số, vào cuối mỗi lần chạy. Ở đây, độ chính xác được sử dụng làm giá trị ma trận và trong trường hợp này là 0,95. Các giá trị tham số cho tỷ lệ học tập và hiệu quả lần lượt là 0,01 và 90. Đây là mã:

# Bắt đầu chạy MLflow để ghi nhật ký số liệu và tham số

với mlflow. bắt đầu chạy ( thử nghiệm_id = exp_id ) :

# Code machine learning của bạn đây (đây chỉ là ví dụ mô phỏng)

mô hình_độ chính xác = 0,95

máy_learning_rate = 0,01

hiệu suất_tỷ lệ = 90

# Nhật ký số liệu và tham số

mlflow. log_metric ( 'sự chính xác' , mô hình_độ chính xác )

mlflow. log_param ( 'tỷ lệ học' , máy_learning_rate )

mlflow. log_param ( 'hiệu suất_tỷ lệ' , hiệu suất_tỷ lệ )

Kết quả khi đoạn mã nói trên được thực thi sẽ được hiển thị ở đây. Kết quả vẫn giống như trước:

Bước 3: Thực hiện tìm kiếm bằng Mlflow.search_runs()

Cuối cùng, chúng tôi chạy tìm kiếm trên các lần chạy đã được ghi lại bằng cách sử dụng một vài tham số và hiển thị kết quả trên màn hình đầu cuối:

# Xác định tiêu chí tìm kiếm cho các lần chạy

xác định_search_criteria = 'metrics.accuracy > 0,8 VÀ params.learning_rate = '0,01' VÀ params.efficiency_rate = '90''

# Thực hiện tìm kiếm

chạy = mlflow. tìm_chạy ( thử nghiệm_ids = exp_id , chuỗi_bộ lọc = xác định_search_criteria )

#Hiển thị kết quả

in ( 'Kết quả tìm kiếm:' )

in ( chạy )

Cảnh báo liên quan đến công cụ Git được tạo ra khi thực thi hàm search_runs:


Thêm một số mã ở đầu tệp Python để tắt cảnh báo này. Đây là phần ngắn của mã:

nhập khẩu dòng chảy

nhập khẩu Bạn

Bạn . khoảng [ 'GIT_PYTHON_REFRESH' ] = 'im lặng'

Hàm “mlflow.search_runs” được thực thi thành công khi các dòng mã này được thêm vào:

Phần kết luận

Chức năng “mlflow.search_runs” cho phép người dùng nhanh chóng khám phá và đánh giá các thử nghiệm máy học, phân tích nhiều lần chạy và xác định chính xác các biến thể hoặc mô hình siêu tham số tối ưu mang lại kết quả mong muốn. Nó là một công cụ hiệu quả để giám sát, lập kế hoạch và phân tích quy trình học máy.