Вопрос или проблема
Документация по получению списка заданий с использованием AzureML REST API доступна здесь: https://learn.microsoft.com/en-us/rest/api/azureml/jobs/list?view=rest-azureml-2024-04-01&tabs=HTTP
Однако этот запрос может вернуть сотни завершенных заданий. Меня интересует фильтрация списка на стороне сервера так, чтобы отображались только задания в очереди или выполняющиеся. Мне не удалось указать правильную комбинацию директив свойств, чтобы получить эти задания — в чем секрет?
Стоит отметить, что AzureML Studio использует другой API по адресу https://ml.azure.com/api/…/entities для получения этого списка, но этот API не поддерживается Az REST CLI.
Ответ или решение
Чтобы получить список текущих и ожидающих заданий в рабочем пространстве Azure ML, вы можете воспользоваться REST API Azure Machine Learning. В документации, на которую вы ссылаетесь, указано, как получить список всех заданий, однако, как вы правильно заметили, это может вернуть много завершённых заданий, что усложняет анализ.
Для того чтобы фильтровать задания по статусу, вы можете использовать параметр filter
в вашем запросе. Вот как это можно сделать:
-
Подготовьте свой запрос: Вам нужно будет отправить GET запрос к следующему URL:
https://<your-workspace-region.api.azureml.ms/ml/v1.0/jobs?filter=status in ('Queued','Running')
Замените
<your-workspace-region>
на регион вашего рабочего пространства. -
Аутентификация: Убедитесь, что вы используете правильные учётные данные и токен доступа при выполнении запроса. Вам нужно передать токен в заголовке запроса, например:
Authorization: Bearer <your-access-token>
-
Формирование полного запроса:
Пример запроса с использованиемcurl
:curl -X GET "https://<your-workspace-region.api.azureml.ms/ml/v1.0/jobs?filter=status in ('Queued','Running')" \ -H "Authorization: Bearer <your-access-token>" \ -H "Content-Type: application/json"
-
Обработка ответа: В ответе на ваш запрос будут перечислены только те задания, которые находятся в состоянии
Queued
илиRunning
. Вы сможете обработать полученные данные согласно вашим нуждам.
Если вы используете Python, вы можете использовать библиотеку requests
для выполнения запроса:
import requests
workspace_region = 'your-workspace-region'
access_token = 'your-access-token'
url = f"https://{workspace_region}.api.azureml.ms/ml/v1.0/jobs?filter=status in ('Queued','Running')"
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
jobs = response.json()
print(jobs) # Вывод списка заданий
else:
print(f"Ошибка: {response.status_code}, {response.text}")
Таким образом, вы сможете получить только те задания, которые находятся в запущенном или ожидающем состоянии без необходимости вручную отсеивать завершённые задания.