Zbieranie plików dziennika potoku uczenia maszynowego w usłudze Application Szczegółowe informacje na potrzeby alertów i debugowania
DOTYCZY: Zestaw SDK języka Python azureml w wersji 1
Bibliotekę OpenCensus języka Python można użyć do kierowania dzienników do Szczegółowe informacje aplikacji ze skryptów. Agregowanie dzienników z przebiegów potoku w jednym miejscu umożliwia tworzenie zapytań i diagnozowanie problemów. Korzystanie z Szczegółowe informacje aplikacji umożliwia śledzenie dzienników w czasie i porównywanie dzienników potoków między przebiegami.
Posiadanie dzienników w miejscu zapewni historię wyjątków i komunikatów o błędach. Ponieważ Szczegółowe informacje aplikacji integruje się z alertami platformy Azure, można również tworzyć alerty na podstawie zapytań Szczegółowe informacje aplikacji.
Wymagania wstępne
- Wykonaj kroki tworzenia obszaru roboczego usługi Azure Machine Edukacja i tworzenia pierwszego potoku
- Skonfiguruj środowisko programistyczne, aby zainstalować zestaw SDK usługi Azure Machine Edukacja.
- Zainstaluj pakiet Eksportera usługi Azure Monitor OpenCensus lokalnie:
pip install opencensus-ext-azure
- Tworzenie wystąpienia Szczegółowe informacje aplikacji (ten dokument zawiera również informacje dotyczące uzyskiwania parametry połączenia dla zasobu)
Wprowadzenie
Ta sekcja jest wprowadzeniem specyficznym dla używania biblioteki OpenCensus z potoku usługi Azure Machine Edukacja. Aby uzyskać szczegółowy samouczek, zobacz OpenCensus Azure Monitor Exporters (Eksporterzy usługi Azure Monitor w usłudze OpenCensus)
Dodaj skrypt PythonScriptStep do potoku usługi Azure Machine Edukacja. Skonfiguruj konfigurację RunConfiguration przy użyciu zależności od polecenia opencensus-ext-azure. Skonfiguruj zmienną APPLICATIONINSIGHTS_CONNECTION_STRING
środowiskową.
from azureml.core.conda_dependencies import CondaDependencies
from azureml.core.runconfig import RunConfiguration
from azureml.pipeline.core import Pipeline
from azureml.pipeline.steps import PythonScriptStep
# Connecting to the workspace and compute target not shown
# Add pip dependency on OpenCensus
dependencies = CondaDependencies()
dependencies.add_pip_package("opencensus-ext-azure>=1.0.1")
run_config = RunConfiguration(conda_dependencies=dependencies)
# Add environment variable with Application Insights Connection String
# Replace the value with your own connection string
run_config.environment.environment_variables = {
"APPLICATIONINSIGHTS_CONNECTION_STRING": 'InstrumentationKey=00000000-0000-0000-0000-000000000000'
}
# Configure step with runconfig
sample_step = PythonScriptStep(
script_name="sample_step.py",
compute_target=compute_target,
runconfig=run_config
)
# Submit new pipeline run
pipeline = Pipeline(workspace=ws, steps=[sample_step])
pipeline.submit(experiment_name="Logging_Experiment")
Utwórz plik o nazwie sample_step.py
. Zaimportuj klasę AzureLogHandler, aby skierować dzienniki do Szczegółowe informacje aplikacji. Należy również zaimportować bibliotekę rejestrowania języka Python.
from opencensus.ext.azure.log_exporter import AzureLogHandler
import logging
Następnie dodaj program AzureLogHandler do rejestratora języka Python.
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
# Assumes the environment variable APPLICATIONINSIGHTS_CONNECTION_STRING is already set
logger.addHandler(AzureLogHandler())
logger.warning("I will be sent to Application Insights")
Rejestrowanie przy użyciu wymiarów niestandardowych
Domyślnie dzienniki przekazywane do aplikacji Szczegółowe informacje nie będą miały wystarczającego kontekstu, aby śledzić przebieg lub eksperyment. Aby umożliwić działanie dzienników w celu diagnozowania problemów, potrzebne są więcej pól.
Aby dodać te pola, można dodać wymiary niestandardowe w celu zapewnienia kontekstu do komunikatu dziennika. Jednym z przykładów jest to, że ktoś chce wyświetlić dzienniki w wielu krokach w tym samym przebiegu potoku.
Wymiary niestandardowe tworzą słownik par klucz-wartość (przechowywany jako ciąg, ciąg). Słownik jest następnie wysyłany do aplikacji Szczegółowe informacje i wyświetlany jako kolumna w wynikach zapytania. Jego poszczególne wymiary mogą być używane jako parametry zapytania.
Przydatny kontekst do uwzględnienia
Pole | Rozumowanie/przykład |
---|---|
parent_run_id | Może wykonywać zapytania dotyczące dzienników dla tych z tymi samymi parent_run_id, aby wyświetlić dzienniki w czasie dla wszystkich kroków, zamiast zagłębić się w poszczególne kroki |
step_id | Może wysyłać zapytania o dzienniki dla tych z tymi samymi step_id, aby zobaczyć, gdzie wystąpił problem z wąskim zakresem tylko do pojedynczego kroku |
step_name | Może wykonywać zapytania dotyczące dzienników, aby zobaczyć wydajność kroku w czasie. Pomaga również znaleźć step_id dla ostatnich przebiegów bez nurkowania w interfejsie użytkownika portalu |
experiment_name | Może wykonywać zapytania w dziennikach, aby zobaczyć wydajność eksperymentu w czasie. Pomaga również znaleźć parent_run_id lub step_id dla ostatnich przebiegów bez przechodzenia do interfejsu użytkownika portalu |
run_url | Może podać link bezpośrednio do przebiegu na potrzeby badania. |
Inne przydatne pola
Te pola mogą wymagać dodatkowej instrumentacji kodu i nie są dostarczane przez kontekst uruchamiania.
Pole | Rozumowanie/przykład |
---|---|
build_url/build_version | W przypadku wdrażania przy użyciu ciągłej integracji/ciągłego wdrażania to pole może skorelować dzienniki z wersją kodu, która dostarczyła logikę kroku i potoku. Ten link może dodatkowo pomóc w diagnozowaniu problemów lub identyfikowaniu modeli z określonymi cechami (wartości dzienników/metryk) |
run_type | Może rozróżniać różne typy modeli lub przebiegi trenowania a oceniania |
Tworzenie słownika wymiarów niestandardowych
from azureml.core import Run
run = Run.get_context(allow_offline=False)
custom_dimensions = {
"parent_run_id": run.parent.id,
"step_id": run.id,
"step_name": run.name,
"experiment_name": run.experiment.name,
"run_url": run.parent.get_portal_url(),
"run_type": "training"
}
# Assumes AzureLogHandler was already registered above
logger.info("I will be sent to Application Insights with Custom Dimensions", extra= {"custom_dimensions":custom_dimensions})
Zagadnienia dotyczące rejestrowania języka Python w usłudze OpenCensus
Program AzureLogHandler openCensus służy do kierowania dzienników języka Python do Szczegółowe informacje aplikacji. W związku z tym należy wziąć pod uwagę niuanse rejestrowania języka Python. Po utworzeniu rejestratora ma domyślny poziom dziennika i będzie wyświetlać dzienniki większe lub równe tym poziomom. Dobrym rozwiązaniem do korzystania z funkcji rejestrowania języka Python jest książka kucharka rejestrowania.
Zmienna APPLICATIONINSIGHTS_CONNECTION_STRING
środowiskowa jest wymagana dla biblioteki OpenCensus. Zalecamy ustawienie tej zmiennej środowiskowej zamiast przekazywania jej jako parametru potoku, aby uniknąć przekazywania po parametry połączenia zwykłego tekstu.
Wykonywanie zapytań dotyczących dzienników w Szczegółowe informacje aplikacji
Dzienniki kierowane do Szczegółowe informacje aplikacji będą wyświetlane w obszarze "ślady" lub "wyjątki". Pamiętaj, aby dostosować przedział czasu, aby uwzględnić przebieg potoku.
W wyniku Szczegółowe informacje aplikacji zostanie wyświetlony komunikat dziennika i poziom, ścieżka pliku i numer wiersza kodu. Spowoduje to również wyświetlenie wszystkich uwzględnionych wymiarów niestandardowych. Na tym obrazie słownik customDimensions przedstawia pary klucz/wartość z poprzedniego przykładu kodu.
Inne przydatne zapytania
Niektóre z poniższych zapytań używają polecenia "customDimensions.Level". Te poziomy ważności odpowiadają poziomowi, z którego pierwotnie został wysłany dziennik języka Python. Aby uzyskać więcej informacji na temat zapytań, zobacz Zapytania dzienników usługi Azure Monitor.
Przypadek użycia | Zapytanie |
---|---|
Wyniki dziennika dla określonego wymiaru niestandardowego, na przykład "parent_run_id" | ślady | |
Wyniki dziennika dla wszystkich przebiegów treningowych w ciągu ostatnich siedmiu dni | ślady | |
Wyniki dziennika o ważnościLevel Błąd z ostatnich siedmiu dni | ślady | |
Liczba wyników dziennika o ważnościLevel Błąd w ciągu ostatnich siedmiu dni | ślady | |
Następne kroki
Po zalogowaniu się w wystąpieniu usługi Application Szczegółowe informacje można ich użyć do ustawiania alertów usługi Azure Monitor na podstawie wyników zapytania.
Możesz również dodawać wyniki z zapytań do pulpitu nawigacyjnego platformy Azure, aby uzyskać więcej szczegółowych informacji.