Translation not up to date
Niestandardowe środowisko uczenia maszynowego można wykorzystać do rejestrowania ładunku, rejestrowania informacji zwrotnych oraz do mierzenia dokładności wydajności, wykrywania błędów w czasie wykonywania, wyjaśniania, wykrywania dryftu i funkcji automatycznego obciążania w systemie IBM Watson OpenScale. Niestandardowe środowisko uczenia maszynowego musi mieć odpowiednik IBM Watson Machine Learning.
IBM Watson OpenScale w pełni obsługuje następujące niestandardowe środowiska uczenia maszynowego:
Tabela 1. Szczegóły obsługi środowiska
Środowisko | Typ problemu | Typ danych |
---|---|---|
Odpowiednik IBM Watson Machine Learning | Danych | Strukturalne |
Odpowiednik IBM Watson Machine Learning | Regresja | Strukturalne |
W przypadku modelu, który nie jest odpowiednikiem modelu IBM Watson Machine Learning, należy utworzyć opakowanie dla modelu niestandardowego, który udostępnia wymagane punkty końcowe interfejsu REST API. Należy również połączyć wejście/wyjście między systemem Watson OpenScale i rzeczywistym niestandardowym mechanizmem uczenia maszynowego.
Kiedy niestandardowy mechanizm uczenia maszynowego jest dla mnie najlepszym wyborem?
Niestandardowy mechanizm uczenia maszynowego jest najlepszym wyborem, gdy spełnione są następujące warunki:
- Do obsługi modeli uczenia maszynowego nie są używane żadne natychmiast dostępne produkty. Masz system do obsługi modeli i nie ma bezpośredniego wsparcia dla tej funkcji w systemie Watson OpenScale .
- Używany mechanizm udostępniania od dostawcy 3rd-party nie jest jeszcze obsługiwany przez system Watson OpenScale . W takim przypadku należy rozważyć utworzenie niestandardowego mechanizmu uczenia maszynowego jako opakowania dla pierwotnych lub rodzimych wdrożeń.
Jak to działa?
Na poniższym obrazku przedstawiono obsługę środowiska niestandardowego:
Można również odwołać się do następujących odsyłaczy:
Interfejs API rejestrowania ładunkuWatson OpenScale
Python SDK for IBM Watson OpenScale
Kryteria wejściowe dla modelu do obsługi monitorów
W poniższym przykładzie model przyjmuje jako dane wejściowe wektor predyktora, który jest zasadniczo zbiorem nazwanych zmiennych i ich wartości.
{ "fields": [ "name", "age", "position" ], "values": [ [ "john", 33, "engineer" ], [ "mike", 23, "student" ] ]
Zmienna
“age”
może być wartościowana dla rzetelności.Jeśli dane wejściowe to tensor lub macierz, która jest transformowana z przestrzeni właściwości wejściowych, model ten nie może być obsługiwany przez platformę Watson OpenScale w bieżącej wersji. Co za tym idzie, modele uczenia głębokiego z danymi wejściowymi tekstowymi lub obrazowymi nie mogą być obsługiwane w celu wykrywania i łagodzenia uprzedzeń.
Ponadto dane uczące muszą być załadowane w celu obsługi funkcji Explainability.
Dla wyjaśnienia tekstu, pełny tekst powinien być jedną z funkcji. Wyjaśnianie obrazów dla modelu niestandardowego nie jest obsługiwane w bieżącej wersji.
Kryteria wyjściowe modelu do obsługi monitorów
Model generuje wektor predyktorów obok prawdopodobieństw predykcji różnych klas w tym modelu.
{ "fields": [ "name", "age", "position", "prediction", "probability" ], "labels": [ "personal", "camping" ], "values": [ [ "john", 33, "engineer", "personal", [ 0.6744664422398081, 0.3255335577601919 ] ], [ "mike", 23, "student" "camping", [ 0.2794765664946941, 0.7205234335053059 ] ] ] }
W tym przykładzie
"personal”
i“camping”
są możliwymi klasami, a oceny w każdym wyniku oceniania są przypisane do obu klas. Jeśli prawdopodobieństwa predykcji są brakujące, wykrywanie odchyleń działa, ale auto-debias nie działa.Dostęp do danych wyjściowych oceniania można uzyskać z punktu końcowego oceniania na żywo, który Watson OpenScale może wywoływać za pomocą interfejsu API REST. W przypadku modeli CUSTOMML, SageMakeri IBM Watson Machine Learning Watson OpenScale bezpośrednio łączy się z rodzimymi punktami końcowymi oceniania.
Niestandardowy mechanizm uczenia maszynowego
Niestandardowy mechanizm uczenia maszynowego udostępnia infrastrukturę i funkcje hostingowe dla modeli uczenia maszynowego i aplikacji WWW. Niestandardowe mechanizmy uczenia maszynowego, które są obsługiwane przez system Watson OpenScale , muszą spełniać następujące wymagania:
Udostępnij dwa typy punktów końcowych interfejsu REST API:
- Punkt końcowy wykrywania (GET-lista wdrożeń i szczegółów)
- punkty końcowe oceny (punktacja online i w czasie rzeczywistym)
Wszystkie punkty końcowe muszą być zgodne ze specyfikacją Swagger, aby były obsługiwane.
Ładunek wejściowy i dane wyjściowe do lub z wdrożenia muszą być zgodne z formatem pliku JSON opisanym w specyfikacji.
System Watson OpenScale obsługuje tylko formaty uwierzytelniania BasicAuth
, none
lub apiKey
.
Aby wyświetlić specyfikację punktów końcowych interfejsu REST API, należy zapoznać się z sekcją Interfejs REST APIWatson OpenScale.
Dodawanie niestandardowego mechanizmu uczenia maszynowego do systemu Watson OpenScale
Produkt Watson OpenScale można skonfigurować do pracy z niestandardowym dostawcą uczenia maszynowego za pomocą jednej z następujących metod:
- Za pomocą interfejsu konfiguracyjnego można dodać pierwszego niestandardowego dostawcę uczenia maszynowego do systemu Watson OpenScale. Więcej informacji na ten temat zawiera sekcja Określanie niestandardowej instancji uczenia maszynowego.
- Dostawcę uczenia maszynowego można również dodać za pomocą pakietu Python SDK. Tej metody należy użyć, jeśli ma być używany więcej niż jeden dostawca. Więcej informacji na ten temat zawiera sekcja Dodawanie niestandardowego mechanizmu uczenia maszynowego.
Eksploruj dalej
Użyj niestandardowego monitora uczenia maszynowego, aby utworzyć sposób interakcji z innymi usługami:
Określanie instancji niestandardowej usługi ML
Pierwszym krokiem w narzędziu Watson OpenScale jest określenie instancji usługi. Instancja usługi jest miejscem, w którym przechowywane są modele i wdrożenia sztucznej inteligencji.
Połącz instancję usługi niestandardowej
Watson OpenScale łączy się z modelami i wdrożeniami sztucznej inteligencji w instancji usługi. Można połączyć się z usługą niestandardową. Aby połączyć usługę z systemem Watson OpenScale, przejdź do karty Konfiguruj , dodaj dostawcę uczenia maszynowego i kliknij ikonę Edytuj . Oprócz nazwy, opisu i określenia typu środowiska Przedprodukcyjnego lub produkcyjnego należy podać następujące informacje specyficzne dla tego typu instancji usługi:
- Nazwa użytkownika
- Hasło
- Punkt końcowy interfejsu API, który używa formatu
https://host:port
, na przykładhttps://custom-serve-engine.example.net:8443
Wybierz, czy połączyć się z wdrożeniami , żądając listy , czy wprowadzając pojedyncze punkty końcowe oceniania.
Żądanie listy wdrożeń
Jeśli wybrano kafel Żądaj listy wdrożeń , wprowadź referencje i punkt końcowy interfejsu API, a następnie zapisz konfigurację.
Udostępnianie pojedynczych punktów końcowych oceniania
Jeśli wybrano kafel Wprowadź pojedyncze punkty końcowe oceniania , wprowadź referencje dla punktu końcowego interfejsu API, a następnie zapisz konfigurację.
Teraz można wybrać wdrożone modele i skonfigurować monitory. Watson OpenScale wyświetla wdrożone modele na panelu kontrolnym Insights , na którym można kliknąć opcję Dodaj do panelu kontrolnego. Wybierz wdrożenia, które mają być monitorowane, i kliknij opcję Konfiguruj.
Więcej informacji na ten temat zawiera sekcja Konfigurowanie monitorów.
Przykłady niestandardowego mechanizmu uczenia maszynowego
Poniższe pomysły umożliwiają skonfigurowanie własnego niestandardowego mechanizmu uczenia maszynowego.
Python i kolba
Do obsługi modelu scikit-learn można używać języka Python i kolby.
Aby wygenerować model wykrywania dryftu, należy użyć narzędzia scikit-learn w wersji 0.20.2 w notatniku.
Aplikację można wdrożyć lokalnie na potrzeby testowania i jako aplikację na platformie IBM Cloud.
Node.js
Można również znaleźć przykład niestandardowego mechanizmu uczenia maszynowego, który został napisany w języku Node.js tutaj.
Wzorzec kodu End2end
Wzorzec kodu przedstawiający przykład end2end niestandardowego wdrożenia mechanizmu i integracji z systemem Watson OpenScale.
Rejestrowanie ładunku przy użyciu niestandardowego mechanizmu uczenia maszynowego
Aby skonfigurować rejestrowanie ładunku dla mechanizmu innego niżIBM Watson Machine Learning lub niestandardowego mechanizmu uczenia maszynowego, należy powiązać mechanizm ML jako niestandardowy.
Dodaj niestandardowy mechanizm uczenia maszynowego
Mechanizm inny niżWatson Machine Learning jest dodawany jako mechanizm niestandardowy przy użyciu metadanych i nie istnieje bezpośrednia integracja z usługą inną niżIBM Watson Machine Learning . Do systemu Watson OpenScale można dodać więcej niż jeden mechanizm uczenia maszynowego, używając metody wos_client.service_providers.add
.
CUSTOM_ENGINE_CREDENTIALS = {
"url": "***",
"username": "***",
"password": "***",
}
wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
credentials=CustomCredentials(
url= CUSTOM_ENGINE_CREDENTIALS['url'],
username= CUSTOM_ENGINE_CREDENTIALS['username'],
password= CUSTOM_ENGINE_CREDENTIALS['password'],
),
background_mode=False
).result
Dostawcę usług można wyświetlić za pomocą następującej komendy:
client.service_providers.get(service_provider_id).result.to_dict()
Skonfiguruj zabezpieczenia przy użyciu klucza API
Aby skonfigurować zabezpieczenia niestandardowego mechanizmu uczenia maszynowego, system Watson OpenScale obsługuje IBM Cloud i IBM Cloud Pak for Data jako dostawców uwierzytelniania. Adresu URL https://iam.cloud.ibm.com/identity/token
można użyć do wygenerowania tokenu IAM dla IBM Cloud , a adresu URL https://<$hostname>/icp4d-api/v1/authorize
do wygenerowania tokenu dla Cloud Pak for Data.
Żądania POST /v1/deployments/{deployment_id}/online
można użyć do zaimplementowania interfejsu API oceniania w następujących formatach:
Żądanie
{
"input_data": [{
"fields": [
"name",
"age",
"position"
],
"values": [
[
"john",
33,
"engineer"
],
[
"mike",
23,
"student"
]
]
}]
}
Reagowanie
{
"predictions": [{
"fields": [
"name",
"age",
"position",
"prediction",
"probability"
],
"labels": [
"personal",
"camping"
],
"values": [
[
"john",
33,
"engineer",
"personal",
[
0.6744664422398081,
0.32553355776019194
]
],
[
"mike",
23,
"student",
"camping",
[
0.2794765664946941,
0.7205234335053059
]
]
]
}]
}
Dodaj subskrypcję niestandardową
Aby dodać subskrypcję niestandardową, uruchom następującą komendę:
custom_asset = Asset(
asset_id=asset['entity']['asset']['asset_id'],
name=asset['entity']['asset']['name'],
url = "dummy_url",
asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
input_data_type=InputDataType.STRUCTURED,
)
deployment = AssetDeploymentRequest(
deployment_id=asset['metadata']['guid'],
url=asset['metadata']['url'],
name=asset['entity']['name'],
deployment_type=asset['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
prediction_field='predicted_label',
probability_fields = ["probability"],
training_data_reference=None,
training_data_schema=None,
input_data_schema=None,
output_data_schema=output_schema,
)
result = ai_client.subscriptions.add(
data_mart_id=cls.datamart_id,
service_provider_id=cls.service_provider_id,
asset=custom_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
Aby uzyskać listę subskrypcji, uruchom następującą komendę:
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Włącz rejestrowanie ładunku
Aby włączyć rejestrowanie ładunku w subskrypcji, uruchom następującą komendę:
request_data = {'fields': feature_columns,
'values': [[payload_values]]}
Aby uzyskać szczegółowe informacje na temat rejestrowania, uruchom następującą komendę:
response_data = {'fields': list(result['predictions'][0]),
'values': [list(x.values()) for x in result['predictions']]}
Rejestrowanie wyników i ładunku
Oceń swój model.
Zapisz żądanie i odpowiedź w tabeli rejestrowania ładunku
records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)] subscription.payload_logging.store(records=records_list)
W przypadku języków innych niż Pythonładunek można również rejestrować przy użyciu interfejsu API REST.
Temat nadrzędny: Obsługiwane mechanizmy uczenia maszynowego, środowiska i modele