0 / 0
Go back to the English version of the documentation
Konuşlandırılabilir Python işlevleri yazılıyor
Last updated: 14 Ağu 2023
Konuşlandırılabilir Python işlevleri yazılıyor

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çin score_response değişkeninin şemasını içermelidir. Değeri JSON nesneleri dizisi olan prediction parametresinin score çı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 valuesadlı 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ü, scoreiçin giriş parametresi değeri olarak iletilmelidir. Bu şekilde, score giriş parametresi değerinin scoreiç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

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.

Önemli:

İş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ı

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.

Önemli:

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, scoreadlı 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

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more