Translation not up to date
Python işlevinin nasıl yazılacağını ve modellerin konuşlandırılmasına izin veren bir varlık olarak nasıl saklanacağını öğrenin.
Konuşlandırılabilir işlevlere ilişkin genel gereksinmelerin bir listesi için Konuşlandırılabilir işlevlere ilişkin genel gereksinimlerbaşlıklı konuya bakın. Bir işlev konuşlandırması sırasında neler olduğuna ilişkin bilgi edinmek için İşlev konuşlandırma süreci konusuna bakın.
Konuşlandırılabilir işlevler için genel gereksinimler
Başarıyla konuşlandırılabilmesi için bir işlevin aşağıdaki gereksinimleri karşılaması gerekir:
- İçe aktarmada Python işlev dosyası, kapsamının bir parçası olarak
score
işlev nesnesine sahip olmalıdır. Bkz. Puan işlevi gereksinimleri - Puanlama giriş bilgi yükü, Puanlama giriş gereksinimleri içinde listelenen gereksinimleri karşılamalıdır
score
çıkışı olarak beklenen çıkış bilgi yükü, durum kodu 200 içinscore_response
değişkeninin şemasını içermelidir. Değeri JSON nesneleri dizisi olanprediction
parametresininscore
çıkışında zorunlu olduğunu unutmayın.- Bir dış işleve başvuru içeren bir Python işlevini kaydetmek için Python istemcisini kullandığınızda, yalnızca dış işlevin kapsamındaki kod (iç içe geçmiş işlevleri de içinde olmak üzere) kaydedilir. Bu nedenle, dış işlevin kapsamı dışındaki kod saklanmaz ve işlevi konuşlandırdığınızda bu kod kullanılamaz.
Puan işlevi gereksinimleri
score
işlev nesnesini eklemenin iki yolu vardır:- belirtik olarak, kullanıcıya göre
- örtük olarak, Python işlevini Watson Machine Learning havuzunda varlık olarak kaydetmek için kullanılan yöntemle
score
işlevi tek bir JSON giriş parametresini kabul etmelidir.score
işlevi, JSON-diziselleştirilebilir bir nesne döndürmelidir (örneğin: sözlükler ya da listeler)
Giriş gereksinimlerini puanlama
Puanlama girişi bilgi yükü, bu örnek şemada gösterildiği gibi
values
adlı bir dizi içermelidir.{"input_data": [{ "values": [["Hello world!"]] }] }
Not:
-` input_data ` parametresi bilgi yükünde zorunludur.
-` input_data ` parametresi ek ad-değer çiftleri de içerebilir.Puanlama giriş bilgi yükü,
score
için giriş parametresi değeri olarak iletilmelidir. Bu şekilde,score
giriş parametresi değerininscore
içinde uygun şekilde işlendiğinden emin olun.Puanlama girişi bilgi yükü, ilgili Python işlevine ilişkin giriş gereksinimleriyle eşleşmelidir.
Puanlama girişi bilgi yükü, Örnek giriş verileri şemasıylaeşleşen bir dizi içermelidir.
Örnek giriş verileri şeması
{"input_data": [{
"values": [["Hello world!"]]
}]
}
Örnek Python kodu
#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()
İşlevinizi aşağıdaki gibi sınayabilirsiniz:
input_data = { "input_data": [{ "fields": [ "message" ],
"values": [[ "Hello world!" ]]
}
]
}
function_result = score( input_data )
print( function_result )
"Merhaba dünya!" mesajını verir.
İşlev konuşlandırma süreci
İşlev varlığınızın Python kodu, import
deyimi kullanılarak Watson Machine Learning motoru tarafından Python modülü olarak yüklenir. Bu, kodun tam olarak bir kez (işlev konuşlandırıldığında ya da ilgili pod yeniden başlatıldığında) yürütüleceği anlamına gelir. İşlev varlığı tarafından tanımlanan score
işlevi daha sonra her öngörü isteğinde çağrılır.
Konuşlandırılabilir işlevlerin işlenmesi
Konuşlandırılır bir Python işlevi yaratmak için aşağıdaki yöntemlerden birini kullanın:
- REST API 'si aracılığıyla devreye alınabilir işlevler oluşturma
- Python istemcisi aracılığıyla konuşlandırılabilir işlevler yaratılması
REST API 'si aracılığıyla devreye alınabilir işlevler oluşturma
REST API ' leri için, Python işlevi doğrudan bir dosya üzerinden karşıya yüklendiğinden, dosyanın score
işlevini önceden içermesi gerekir. Daha sonra score
işlevinde kullanılması gereken herhangi bir zaman içe aktarma işlemi, dosyanın genel kapsamı içinde gerçekleştirilebilir. Bu dosya bir Python işlevi olarak konuşlandırıldığında, genel kapsamda bulunan tek seferlik içe aktarmalar konuşlandırma sırasında yürütülür ve daha sonra her öngörü isteğiyle yeniden kullanılır.
İşlev arşivi bir .gz
dosyası olmalıdır.
Örnek score
işlev dosyası:
Score function.py
---------------------
def score(input_data):
return {'predictions': [{'values': [['Just a test']]}]}
Bir kerede içe aktarmalar içeren örnek score
işlevi:
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__]]}]}
Python istemcisi aracılığıyla konuşlandırılabilir işlevler oluşturma
Bir Python işlevini varlık olarak kalıcı kılmak için, Python istemcisi wml_client.repository.store_function
yöntemini kullanır. Bunu iki şekilde yapabilirsiniz:
- Python işlevini içeren bir dosya aracılığıyla işlevin kalıcı kılınması
- İşlev nesnesi aracılığıyla işlevin kalıcı kılınması
Python işlevini içeren bir dosya aracılığıyla işlevin kalıcı kılınması
Bu yöntem, Python işlev dosyasının REST API ' leri aracılığıyla kalıcı kılınmasıyla aynıdır (score
, Python kaynak dosyası kapsamında tanımlanmalıdır). Ayrıntılar için REST API ile konuşlandırılabilir işlevler oluşturmakonusuna bakın.
wml_client.repository.store_function
yöntemini çağırırken, dosya adını ilk bağımsız değişken olarak geçirin.
İşlev nesnesi aracılığıyla bir işlevin kalıcı olarak saklanması
Python işlev nesnelerini Python Clo, score
adlı içiçe yerleştirilmiş bir işlevle yaratarak sürdürebilirsiniz. Çağrıldığında, işlev nesnesi olarak saklanmakta olan dış işlev score
işlevini verir. Bu score
işlevi, Devreye alınabilir işlevler için genel gereksinmelerkısmında listelenen gereksinimleri karşılamalıdır. Bu durumda, konuşlandırma sırasında yürütülebilmeleri ve score
işlevinde kullanılabilmeleri için dış içiçe yerleşimli işleve herhangi bir zaman içe aktarma ve ilk ayar mantığı eklenmelidir. prediction
isteği sırasında gerekli olan yinelenen mantık içiçe score
işlevine eklenmelidir.
Python istemcisini kullanarak örnek Python işlevi:
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)
Bu senaryoda, Python işlevi Python dosyası oluşturma işini alır. Taht, score
işlevini içerir ve işlev dosyasını Watson Machine Learning havuzunda bir varlık olarak sürdürme:
score = my_deployable_function()
Daha fazla bilgi
Üst konu: Python işlevlerini konuşlandırma