MLflow에서 실행 검색

Mlfloweseo Silhaeng Geomsaeg



기계 학습 실험을 추적하고 관리하기 위해 MLflow는 광범위한 플랫폼을 제공합니다. 실행 검색 기능은 MLflow의 주요 기능 중 하나입니다. 이를 통해 개발된 실험을 식별하고 필요할 때마다 정보를 쉽게 찾을 수 있는 방식으로 구성할 수 있습니다. 다음을 포함할 수 있는 다양한 기준을 사용하여 MLflow 검색 API를 사용하여 실행을 검색할 수 있습니다.
  • 실험 ID 또는 이름
  • 실행 ID
  • 매개변수 및 값
  • 측정항목 및 값
  • 태그
  • 실행과 관련된 기타 속성

MLflow 검색 API를 사용하여 실행을 상태, 시작 시간, 종료 시간 및 기간별로 필터링할 수 있습니다. 이를 통해 여러 실행을 필터링하고 사용자가 관심 있는 특정 실행을 더 쉽게 찾을 수 있습니다.

MLflow 검색 기능

MLflow 검색 API에 액세스하려면 mlflow.search_runs() 함수를 사용합니다. 이 함수는 다음과 같은 다양한 인수를 허용합니다.







  • 실험 ID 또는 이름
  • 문자열 또는 텍스트 필터링
  • 반환할 최대 실행 수는 max_results 인수로 지정됩니다.

SQL(Structured Query Language) WHERE 절의 단순화된 변형은 필터 문자열 또는 텍스트입니다. 실행을 정렬하려는 기준을 나타내는 데 사용할 수 있습니다.



MLflow Search_Runs() 함수의 구문

다음 예에서는 검색하려는 실험의 실제 ID 또는 이름을 'experiment_id 또는 Experiment_name'으로 대체해야 합니다. search_criteria 변수를 사용하면 원하는 대로 검색 기준을 입력할 수 있습니다. 이러한 기준은 측정항목, 태그, 매개변수 또는 추가 특성에 따라 결정될 수 있습니다. search_runs() 함수의 기본 구문은 다음과 같습니다.



# search_runs 함수를 사용하려면 mlflow 검색 API를 가져옵니다.

수입 mlflow

# 실험 ID 또는 이름을 제공합니다(선택 사항).

exp_id = '실험 ID 또는 NAME'

# 실행에 대한 검색 기준을 정의합니다.

검색_문자열 = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate > '80''

# 검색을 수행합니다

달린다 = mlflow. 검색_실행 ( 실험_ID = exp_id , 필터_문자열 = 검색_문자열 )

# 결과를 표시합니다

인쇄 ( '검색 결과:' )

인쇄 ( 달린다 )

다양한 기준을 사용하여 검색 실행

1. 지표값으로 검색

MLflow 검색 API의 메트릭 필드를 사용하여 특정 메트릭 값을 기준으로 실행을 필터링할 수 있습니다. 쉼표로 구분된 측정항목 이름 모음이 측정항목 필드에 표시됩니다. 예를 들어 다음 필터 문자열은 정확도 값이 0.9보다 큰 모든 실행을 찾습니다.





측정항목. 정확성 > 0.9

측정항목 필드에서 사용할 수 있는 측정항목의 전체 목록은 다음과 같습니다.

  • 정확성
  • auc
  • f1
  • 정도
  • 상기하다
  • 지도
  • 로그로스
  • 분류_오류
  • multi_class_logloss

또한 사용자는 측정 항목 필드를 사용하여 측정 항목의 값 범위를 기준으로 실행을 필터링할 수 있습니다. 예를 들어 다음 필터 문자열은 정확도 측정값이 0.4에서 0.8 사이인 모든 실행을 찾습니다.



측정항목. 정확성 사이 0.4 그리고 0.8

측정항목 필드에서 AND 및 OR 연산자는 측정항목을 결합하여 측정항목 정확도와 f1 값이 0.3 및 0.8보다 큰 실행을 찾습니다.

측정항목. 정확성 > 0.3 그리고 측정항목. f1 > 0.8

2. 매개변수 값으로 검색

MLflow 검색 API의 params 필드를 사용하여 매개변수 값으로 검색을 수행합니다. 매개변수 이름과 값은 쉼표를 사용하여 params 필드에 나열됩니다. 이 예에서 앞서 언급한 필터 문자열은 값이 100인 num_boost_round 매개변수를 사용하여 모든 실행을 찾습니다.

매개변수. num_boost_round = '100'

매개변수 값에 대한 검색 문자열의 추가 예:

  • params.num_boost_round = 900
  • params.learning_rate 0.001과 0.01 사이
  • params.num_boost_round='70' AND params.learning_rate='0.01'

3. 태그로 검색

다음은 태그를 사용한 검색의 예입니다.

검색 조건 = 'tags.mlflow.source.type = '사전''

Mlflow.search_runs() 함수를 수행하기 위한 매트릭스 및 매개변수 값의 예

MLflow 실험을 설정하고 실행을 로깅한 다음 mlflow.search_runs()를 사용하여 검색을 시작하는 예를 살펴보겠습니다. 코드를 완전히 이해하려면 다음 단계를 따르세요.

1단계: MLflow 실험 만들기

MLflow 실험을 설정하는 것부터 시작합니다. 실험이 이미 존재하는 경우 기존 실험을 가져옵니다. 그렇지 않은 경우 새 항목이 생성됩니다.

코드 설명:

MLflow 라이브러리는 코드의 첫 번째 줄에서 가져오고 다음 줄에서는 Experiment_name이 'My First MLflow Experiment'로 설정됩니다. Experiment_name이 'mlflow.get_experiment_by_name' 함수에 전달되면 해당 함수는 실험이 존재하지 않으면 'None'을 반환하고 그렇지 않으면 실험 대상을 반환합니다.

조건문에서 실험의 존재 여부를 확인합니다. 실험이 이미 존재하는 경우 Experiment_id를 설정합니다. 그렇지 않으면 'mlflow.create_experiment'를 사용하여 새 실험을 만듭니다. 실험 ID는 이 함수에 의해 반환됩니다. 실험이 끝나면 콘솔이나 터미널 화면에 실험 ID를 표시합니다. 메모장에 다음 코드를 복사하고 원하는 이름과 '.py' 확장자로 파일을 저장합니다.

# mlflow 라이브러리 가져오기

수입 mlflow

# 실험을 생성하거나 가져옵니다.

exp_name = '나의 첫 번째 MLflow 실험'

# mlflow 함수 get_experiment_by_name을 사용하여 이름으로 실험을 가져옵니다.

특급 = mlflow. get_experiment_by_name ( exp_name )

# 실험이 아직 존재하지 않는지 확인

만약에 특급 ~이다 없음 :

# 새 실험을 만들고 실험 이름을 mlflow.create_experiment 함수에 전달합니다.

exp_id = mlflow. create_experiment ( exp_name )

# 화면에 성공 메시지를 표시합니다

인쇄 ( '실험이 존재하지 않습니다. 실험이 성공적으로 생성되었습니다!' )

또 다른 :

# 기존 실험의 Experiment_id를 가져옵니다.

exp_id = 특급. 실험_ID

인쇄 ( '실험이 이미 존재합니다!' )

# 실험 ID 표시

인쇄 ( '실험 ID:' , exp_id )

이제 Python 컴파일러를 사용하여 명령 프롬프트 또는 터미널 창에서 프로그램을 실행하고 'Python'을 입력한 다음 파일 이름(이 경우에는 'MyFirstMlflowExperiment.py')을 입력합니다. 실험이 처음 실행되면 아직 존재하지 않습니다. 따라서 MLFlow는 하나를 생성하고 콘솔 화면에 실험 ID를 인쇄합니다.

코드를 다시 실행하여 새 실험을 생성하고 있지 않은지 확인하고 이미 존재하는 실험의 ID를 표시하세요. 다음 스크린샷은 실험이 이미 존재함을 보여줍니다.

2단계: 측정항목 및 매개변수를 사용하여 실행 기록

이제 방금 설정된 실험에 대한 측정항목 및 매개변수를 사용하여 일부 실행을 기록해 보겠습니다. 실제 시나리오에서는 기계 학습 모델을 개발하고 각 실행이 끝날 때 측정항목, 매개변수 등 관련 정보를 기록합니다. 여기서 정확도는 매트릭스 값으로 사용되며, 이 경우 0.95이다. 학습률과 효율성에 대한 매개변수 값은 각각 0.01과 90입니다. 코드는 다음과 같습니다.

# MLflow 실행을 시작하여 측정항목 및 매개변수를 기록합니다.

~와 함께 mlflow. 시작_실행 ( 실험_ID = exp_id ) :

# 여기에 머신러닝 코드가 있습니다(이것은 시뮬레이션된 예일 뿐입니다).

모델_정확도 = 0.95

machine_learning_rate = 0.01

효율성_비율 = 90

# 로그 측정항목 및 매개변수

mlflow. log_metric ( '정확성' , 모델_정확도 )

mlflow. log_param ( '학습_속도' , machine_learning_rate )

mlflow. log_param ( '효율성_비율' , 효율성_비율 )

앞서 언급한 코드를 실행했을 때의 결과는 다음과 같습니다. 결과는 이전과 동일합니다.

3단계: Mlflow.search_runs()를 사용하여 검색 수행

마지막으로 몇 가지 매개변수를 사용하여 기록된 실행에 대해 검색을 실행하고 결과를 터미널 화면에 표시합니다.

# 실행에 대한 검색 기준을 정의합니다.

정의_검색_기준 = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate = '90''

# 검색을 수행합니다

달린다 = mlflow. 검색_실행 ( 실험_ID = exp_id , 필터_문자열 = 정의_검색_기준 )

# 결과를 표시합니다

인쇄 ( '검색 결과:' )

인쇄 ( 달린다 )

search_runs 함수를 실행하면 Git 도구와 관련된 경고가 생성됩니다.


이 경고를 비활성화하려면 Python 파일 상단에 일부 코드를 추가하세요. 다음은 코드의 짧은 섹션입니다.

수입 mlflow

수입

. [ 'GIT_PYTHON_REFRESH' ] = '조용한'

다음 코드 줄이 추가되면 'mlflow.search_runs' 함수가 성공적으로 실행됩니다.

결론

'mlflow.search_runs' 기능을 사용하면 사용자는 기계 학습 실험을 신속하게 탐색 및 평가하고, 많은 실행을 분석하고, 원하는 결과를 가져오는 최적의 하이퍼 매개 변수 변형 또는 모델을 찾아낼 수 있습니다. 기계 학습 워크플로우를 감독, 계획 및 분석하는 데 효과적인 도구입니다.