Translation not up to date
Sekcja zawiera informacje na temat pisania funkcji Python , a następnie przechowywania ich jako zasobu aplikacyjnego, który umożliwia wdrażanie modeli.
Listę ogólnych wymagań dotyczących wdrażalnych funkcji można znaleźć w temacie Ogólne wymagania dla funkcji wdrażalnych. Informacje na temat tego, co dzieje się podczas wdrażania funkcji, można znaleźć w sekcji Proces wdrażania funkcji .
Wymagania ogólne dotyczące wdrażalnych funkcji
Aby możliwe było pomyślne wdrożenie, funkcja musi spełniać następujące wymagania:
- Plik funkcji Python w imporcie musi mieć obiekt funkcji
score
jako część jego zasięgu. Zapoznaj się z wymaganiami funkcji oceny - Ładunek danych wejściowych oceniania musi spełniać wymagania wymienione w sekcji Wymagania wejściowe dotyczące oceniania .
- Dane wyjściowe oczekiwane jako dane wyjściowe produktu
score
muszą zawierać schemat zmiennejscore_response
dla kodu statusu 200. Należy pamiętać, że parametrprediction
z tablicą obiektów JSON jako jego wartością jest obowiązkowy w danych wyjściowych komendyscore
. - Jeśli klient Python jest używany do zapisywania funkcji Python , która zawiera odwołanie do funkcji zewnętrznej, wówczas zapisywany jest tylko kod z zasięgu funkcji zewnętrznej (wraz z jej funkcjami zagnieżdżonymi). Dlatego kod spoza zakresu funkcji zewnętrznej nie zostanie zapisany i w związku z tym nie będzie dostępny podczas wdrażania funkcji.
Wymagania dotyczące funkcji oceny
- Istnieją dwa sposoby dodawania obiektu funkcji
score
:- jawnie, przez użytkownika
- niejawnie za pomocą metody, która jest używana do zapisywania funkcji Python jako zasobu aplikacyjnego w repozytorium Watson Machine Learning
- Funkcja
score
musi akceptować pojedynczy parametr wejściowy JSON. - Funkcja
score
musi zwracać obiekt JSON-serializable (na przykład: słowniki lub lists)
Ocenianie wymagań wejściowych
Ładunek wejściowy oceniania musi zawierać tablicę o nazwie
values
, jak to pokazano w tym przykładowym schemacie.{"input_data": [{ "values": [["Hello world!"]] }] }
Uwaga:
-Parametr ` input_data ` jest obowiązkowy w ładunku.
-Parametr ` input_data ` może również zawierać dodatkowe pary nazwa-wartość.Ładunek wejściowy oceniania musi być przekazywany jako wartość parametru wejściowego dla
score
. W ten sposób można się upewnić, że wartość parametru wejściowegoscore
jest obsługiwana odpowiednio wewnątrz partycjiscore
.Ładunek danych wejściowych oceniania musi być zgodny z wymaganiami wejściowymi dla danej funkcji Python .
Ładunek danych wejściowych oceniania musi zawierać tablicę, która jest zgodna z przykładowym schematem danych wejściowych.
Przykładowy schemat danych wejściowych
{"input_data": [{
"values": [["Hello world!"]]
}]
}
Przykładowy kod Python
#wml_python_function
def my_deployable_function():
def score( payload ):
message_from_input_payload = payload.get("input_data")[0].get("values")[0][0]
response_message = "Received message - {0}".format(message_from_input_payload)
# Score using the pre-defined model
score_response = {
'predictions': [{'fields': ['Response_message_field'],
'values': [[response_message]]
}]
}
return score_response
return score
score = my_deployable_function()
Można przetestować swoją funkcję w następujący sposób:
input_data = { "input_data": [{ "fields": [ "message" ],
"values": [[ "Hello world!" ]]
}
]
}
function_result = score( input_data )
print( function_result )
Zwraca komunikat "Hello world!".
Proces wdrażania funkcji
Kod Python zasobu funkcji jest ładowany jako moduł Python przez mechanizm Watson Machine Learning przy użyciu instrukcji import
. Oznacza to, że kod zostanie wykonany dokładnie raz (po wdrożeniu funkcji lub za każdym razem, gdy odpowiedni strąk zostanie zrestartowany). Funkcja score
zdefiniowana przez zasób funkcji jest wywoływana w każdym żądaniu predykcji.
Obsługa funkcji wdrażalnych
Użyj jednej z tych metod, aby utworzyć funkcję wdrażalną Python :
- Tworzenie wdrażalnych funkcji za pośrednictwem interfejsu API usług REST
- Tworzenie wdrażalnych funkcji za pośrednictwem klienta Python
Tworzenie wdrażalnych funkcji za pośrednictwem interfejsu REST API
W przypadku interfejsów REST API, ponieważ funkcja Python jest przesyłana bezpośrednio przez plik, plik musi już zawierać funkcję score
. Każdy import jednorazowy, który musi zostać użyty do późniejszego użycia w ramach funkcji score
, może być wykonany w zasięgu globalnym pliku. Gdy ten plik jest wdrażany jako funkcja Python , jednorazowy import dostępny w zasięgu globalnym jest wykonywany podczas wdrażania, a następnie po prostu ponownie wykorzystuje się przy każdym żądaniu predykcji.
Archiwum funkcji musi być plikiem .gz
.
Przykładowy plik funkcji score
:
Score function.py
---------------------
def score(input_data):
return {'predictions': [{'values': [['Just a test']]}]}
Przykładowa funkcja score
z jednym importem czasu:
import subprocess
subprocess.check_output('pip install gensim --user', shell=True)
import gensim
def score(input_data):
return {'predictions': [{'fields': ['gensim_version'], 'values': [[gensim.__version__]]}]}
Tworzenie wdrażalnych funkcji za pośrednictwem klienta Python
Aby utrwalić funkcję Python jako zasób aplikacyjny, klient Python korzysta z metody wml_client.repository.store_function
. Można to zrobić na dwa sposoby:
- Utrwalanie funkcji przy użyciu pliku zawierającego funkcję Python
- Utrwalanie funkcji przez obiekt funkcji
Utrwalanie funkcji przy użyciu pliku zawierającego funkcję Python
Ta metoda jest taka sama, jak utrwalanie pliku funkcji Python za pomocą interfejsów REST API (score
musi być zdefiniowany w zasięgu pliku źródłowego Python ). Szczegółowe informacje na ten temat zawiera sekcja Tworzenie wdrażalnych funkcji za pomocą interfejsu API usług REST.
Gdy wywoływana jest metoda wml_client.repository.store_function
, należy przekazać nazwę pliku jako pierwszy argument.
Utrwalanie funkcji przez obiekt funkcji
Obiekty funkcji Python można utrwalić, tworząc Python Closures with a zagnieżdżoną funkcję o nazwie score
. Funkcja score
jest zwracana przez funkcję zewnętrzną, która jest zapisywana jako obiekt funkcji, gdy jest wywoływana. Ta funkcja score
musi spełniać wymagania wymienione w sekcji Ogólne wymagania dla funkcji wdrażalnych. W takim przypadku w zewnętrznej funkcji zagnieżdżonej należy dodać jeden importy czasu i początkową logikę konfiguracji, tak aby były wykonywane podczas wdrażania i były używane w funkcji score
. Każda powtarzająca się logika wymagana podczas żądania prediction
musi zostać dodana w obrębie zagnieżdżonej funkcji score
.
Przykładowa funkcja Python składuje się za pomocą klienta Python :
def my_deployable_function():
import subprocess
subprocess.check_output('pip install gensim', shell=True)
import gensim
def score(input_data):
import
message_from_input_payload = payload.get("input_data")[0].get("values")[0][0]
response_message = "Received message - {0}".format(message_from_input_payload)
# Score using the pre-defined model
score_response = {
'predictions': [{'fields': ['Response_message_field', 'installed_lib_version'],
'values': [[response_message, gensim.__version__]]
}]
}
return score_response
return score
function_meta = {
client.repository.FunctionMetaNames.NAME:"test_function",
client.repository.FunctionMetaNames.SOFTWARE_SPEC_ID: sw_spec_id
}
func_details = client.repository.store_function(my_deployable_function, function_meta)
W tym scenariuszu funkcja Python podejmuje zadanie tworzenia pliku Python , który zawiera funkcję score
i utrwala plik funkcji jako zasób aplikacyjny w repozytorium Watson Machine Learning :
score = my_deployable_function()
Więcej inform.
Temat nadrzędny: Wdrażanie funkcji Python