Per essere distribuita correttamente, una funzione deve soddisfare i requisiti seguenti:
Il file di funzione Python durante l'importazione deve avere l'oggetto funzione score come parte del suo ambito. Fare riferimento a Requisiti della funzione di punteggio
Il payload di output previsto come output di score deve includere lo schema della variabile score_response per il codice di stato 200. Si noti che il parametro prediction , con un array di oggetti JSON come valore, è obbligatorio nell'output score .
Quando si utilizza il client Python per salvare una funzione Python che contiene un riferimento a una funzione esterna, viene salvato solo il codice nell'ambito della funzione esterna (incluse le relative funzioni nidificate). Pertanto, il codice al di fuori dell'ambito della funzione esterna non verrà salvato e quindi non sarà disponibile quando si distribuisce la funzione.
Requisiti della funzione di punteggio
Copy link to section
Esistono due modi per aggiungere l'oggetto funzione score :
esplicitamente, per utente
implicitamente, dal metodo utilizzato per salvare la funzione Python come risorsa nel repository watsonx.ai Runtime
La funzione " score può accettare un singolo parametro di ingresso JSON o due parametri: payload e token del portatore.
La funzione " score deve restituire un oggetto serializzabile JSON (ad esempio: dizionari o elenchi).
Requisiti di input per il calcolo del punteggio
Copy link to section
Il payload di input del calcolo del punteggio deve includere un array con il nome values, come mostrato in questo schema di esempio. Il parametro input_data è obbligatorio nel payload. Il parametro input_data può includere anche ulteriori coppie nome - valore.
Il payload di ingresso del punteggio deve essere passato come valore del parametro di ingresso per 'score. In questo modo è possibile garantire che il valore del parametro di immissione score sia gestito di conseguenza all'interno di score.
Il payload di input del calcolo del punteggio deve soddisfare i requisiti di input per la relativa funzione Python .
Il codice Python della risorsa Function viene caricato come modulo Python dal motore di runtime watsonx.ai utilizzando l'istruzione 'import. Ciò significa che il codice verrà eseguito esattamente una volta (quando la funzione viene distribuita o ogni volta che il pod corrispondente viene riavviato). La funzione score definita dall'asset Funzione viene quindi richiamata in ogni richiesta di previsione.
Gestione delle funzioni distribuibili
Copy link to section
Utilizzare uno di questi metodi per creare una funzione Python distribuibile:
Creazione di funzioni distribuibili tramite l'API REST
Copy link to section
Per le API REST, poiché la funzione Python viene caricata direttamente tramite un file, il file deve contenere già la funzione score . Qualsiasi importazione che deve essere eseguita una sola volta per essere utilizzata successivamente all'interno della funzione score può essere eseguita all'interno dell'ambito globale del file. Quando questo file viene distribuito come funzione Python , le importazioni uniche disponibili nell'ambito globale vengono eseguite durante la distribuzione e successivamente semplicemente riutilizzate con ogni richiesta di previsione.
Importante:
L'archivio funzioni deve essere un file .gz .
File di funzione score di esempio:
Score function.py
---------------------
defscore(input_data):
return {'predictions': [{'values': [['Just a test']]}]}
Copy to clipboardCopiato negli appunti
Funzione score di esempio con importazioni una sola volta:
Creazione di funzioni distribuibili mediante il client Python
Copy link to section
Per rendere persistente una funzione Python come un asset, il client Python utilizza il metodo wml_client.repository.store_function . È possibile persistere una funzione Python in due modi:
Persistenza di una funzione attraverso un file che contiene la funzione Python
Copy link to section
Questo metodo è uguale alla persistenza del file di funzione Python tramite le API REST (score deve essere definito nell'ambito del file origine Python ). Per i dettagli, fare riferimento a Creazione di funzioni distribuibili tramite l'API REST.
Importante:
Quando si richiama il metodo wml_client.repository.store_function , passare il nome file come primo argomento.
Persistenza di una funzione attraverso l'oggetto funzione
Copy link to section
Puoi rendere persistenti gli oggetti della funzione Python creando Python Closures con una funzione nidificata denominata score. La funzione score viene restituita dalla funzione esterna memorizzata come oggetto della funzione, quando viene richiamata. Questa funzione score deve soddisfare i requisiti elencati in Requisiti generali per le funzioni distribuibili. In questo caso, tutte le importazioni e la logica di impostazione iniziale devono essere aggiunte nella funzione nidificata esterna in modo che vengano eseguite durante la distribuzione e vengano utilizzate all'interno della funzione score . Qualsiasi logica ricorrente necessaria durante la richiesta prediction deve essere aggiunta all'interno della funzione score nidificata.
Salva la funzione Python di esempio utilizzando il client Python :
In questo scenario, la funzione Python si occupa di creare un file Python contenente la funzione 'score e di conservare il file della funzione come risorsa nel repository watsonx.ai Runtime: