Örnek: Azure Machine Learning tasarımcısıyla özel beceri oluşturma ve dağıtma (Arşivlenmiş)
Bu örnek arşivlenmiş ve destek dışıdır. Azure Machine Learning tasarımcısının regresyon ve sınıflandırma gibi görevler için makine öğrenmesi modelleri oluşturmak üzere kullanımı kolay bir etkileşimli tuval olduğu açıklanmıştır. Tasarımcı tarafından oluşturulan modeli Bilişsel Arama zenginleştirme işlem hattında çağırmak için birkaç ek adım gerekir. Bu örnekte bir otomobilin fiyatını tahmin etmek ve çıkarım uç noktasını AML becerisi olarak çağırmak için basit bir regresyon modeli oluşturacaksınız.
Örnekler işlem hatları & veri kümeleri belge sayfasındaki Regresyon - Otomobil Fiyat Tahmini (Gelişmiş) öğreticisini izleyerek farklı özellikler göz önünde bulundurulduğunda otomobilin fiyatını tahmin eden bir model oluşturun.
Önemli
Modeli gerçek zamanlı çıkarım işleminden sonra dağıtmak geçerli bir uç noktayla sonuçlanır, ancak Bilişsel Arama'da AML becerisiyle kullanabileceğiniz bir uç noktayla sonuçlanmaz.
Modeli kaydetme ve varlıkları indirme
Modeli eğittikten sonra eğitilen modeli kaydedin ve klasördeki trained_model_outputs
tüm dosyaları indirmek için adımları izleyin veya model yapıtları sayfasından yalnızca score.py
ve conda_env.yml
dosyalarını indirin. Model gerçek zamanlı çıkarım uç noktası olarak dağıtılmadan önce puanlama betiğini düzenlersiniz.
Bilişsel Arama ile kullanmak için puanlama betiğini düzenleme
Bilişsel Arama zenginleştirme işlem hatları tek bir belge üzerinde çalışır ve tek bir tahmin için girişleri içeren bir istek oluşturur. İndirilen score.py
kayıt listesini kabul eder ve tahmin listesini serileştirilmiş JSON dizesi olarak döndürür. İki değişiklik yapacaksınız: score.py
- Betiği listeyle değil, tek bir giriş kaydıyla çalışacak şekilde düzenleyin
- Betiği, tahmin edilen fiyat olan tek bir özelliğe sahip bir JSON nesnesi döndürecek şekilde düzenleyin.
İndirilen score.py
işlevi açın ve düzenleyin run(data)
. işlevi şu anda modelin dosyasında açıklandığı gibi aşağıdaki girişi bekleyecek şekilde ayarlanmıştır _samples.json
.
[
{
"symboling": 2,
"make": "mitsubishi",
"fuel-type": "gas",
"aspiration": "std",
"num-of-doors": "two",
"body-style": "hatchback",
"drive-wheels": "fwd",
"engine-location": "front",
"wheel-base": 93.7,
"length": 157.3,
"width": 64.4,
"height": 50.8,
"curb-weight": 1944,
"engine-type": "ohc",
"num-of-cylinders": "four",
"engine-size": 92,
"fuel-system": "2bbl",
"bore": 2.97,
"stroke": 3.23,
"compression-ratio": 9.4,
"horsepower": 68.0,
"peak-rpm": 5500.0,
"city-mpg": 31,
"highway-mpg": 38,
"price": 6189.0
},
{
"symboling": 0,
"make": "toyota",
"fuel-type": "gas",
"aspiration": "std",
"num-of-doors": "four",
"body-style": "wagon",
"drive-wheels": "fwd",
"engine-location": "front",
"wheel-base": 95.7,
"length": 169.7,
"width": 63.6,
"height": 59.1,
"curb-weight": 2280,
"engine-type": "ohc",
"num-of-cylinders": "four",
"engine-size": 92,
"fuel-system": "2bbl",
"bore": 3.05,
"stroke": 3.03,
"compression-ratio": 9.0,
"horsepower": 62.0,
"peak-rpm": 4800.0,
"city-mpg": 31,
"highway-mpg": 37,
"price": 6918.0
},
{
"symboling": 1,
"make": "honda",
"fuel-type": "gas",
"aspiration": "std",
"num-of-doors": "two",
"body-style": "sedan",
"drive-wheels": "fwd",
"engine-location": "front",
"wheel-base": 96.5,
"length": 169.1,
"width": 66.0,
"height": 51.0,
"curb-weight": 2293,
"engine-type": "ohc",
"num-of-cylinders": "four",
"engine-size": 110,
"fuel-system": "2bbl",
"bore": 3.15,
"stroke": 3.58,
"compression-ratio": 9.1,
"horsepower": 100.0,
"peak-rpm": 5500.0,
"city-mpg": 25,
"highway-mpg": 31,
"price": 10345.0
}
]
Değişiklikleriniz, modelin tek bir kayıt olan dizin oluşturma sırasında Bilişsel Arama tarafından oluşturulan girişi kabul etmesini sağlar.
{
"symboling": 2,
"make": "mitsubishi",
"fuel-type": "gas",
"aspiration": "std",
"num-of-doors": "two",
"body-style": "hatchback",
"drive-wheels": "fwd",
"engine-location": "front",
"wheel-base": 93.7,
"length": 157.3,
"width": 64.4,
"height": 50.8,
"curb-weight": 1944,
"engine-type": "ohc",
"num-of-cylinders": "four",
"engine-size": 92,
"fuel-system": "2bbl",
"bore": 2.97,
"stroke": 3.23,
"compression-ratio": 9.4,
"horsepower": 68.0,
"peak-rpm": 5500.0,
"city-mpg": 31,
"highway-mpg": 38,
"price": 6189.0
}
27 ile 30 arasında olan satırları şununla değiştirin:
for key, val in data.items():
input_entry[key].append(decode_nan(val))
Betiğin bir dizeden JSON nesnesine oluşturduğu çıkışı da düzenlemeniz gerekir. Özgün dosyadaki return deyimini (satır 37) şu şekilde düzenleyin:
output = result.data_frame.values.tolist()
return {
"predicted_price": output[0][-1]
}
Giriş biçimindeki değişiklikleri ve tek bir kaydı giriş olarak kabul edecek ve tahmin edilen fiyatla bir JSON nesnesi döndürecek tahmini çıkışı içeren güncelleştirilmiş run
işlev aşağıdadır.
def run(data):
data = json.loads(data)
input_entry = defaultdict(list)
# data is now a JSON object not a list of JSON objects
for key, val in data.items():
input_entry[key].append(decode_nan(val))
data_frame_directory = create_dfd_from_dict(input_entry, schema_data)
score_module = ScoreModelModule()
result, = score_module.run(
learner=model,
test_data=DataTable.from_dfd(data_frame_directory),
append_or_result_only=True)
#return json.dumps({"result": result.data_frame.values.tolist()})
output = result.data_frame.values.tolist()
# return the last column of the the first row of the dataframe
return {
"predicted_price": output[0][-1]
}
Modeli kaydetme ve dağıtma
Değişiklikleriniz kaydedildikten sonra modeli portala kaydedebilirsiniz. Modeli kaydet'i seçin ve geçerli bir ad verin. Model Framework için, Custom
Çerçeve Adı ve 1.0
Çerçeve Sürümü için öğesini seçinOther
. seçeneğini belirleyin Upload folder
ve güncelleştirilmiş score.py
ve conda_env.yaml
klasörünü seçin.
Modeli seçin ve eylemde öğesini Deploy
seçin. Dağıtım adımında, sağlanan bir AKS çıkarım kümesine sahip olduğunuz varsayılır. Kapsayıcı örnekleri şu anda Bilişsel Arama'da desteklenmemektedir.
- Geçerli bir uç nokta adı sağlayın
- İşlem türünü seçin
Azure Kubernetes Service
- Çıkarım kümeniz için işlem adını seçin
- Açık konuma getirin
enable authentication
- Tür için seçin
Key-based authentication
- Güncelleştirilen
score.py
öğesini seçinentry script file
- Öğesini seçin
conda_env.yaml
conda dependencies file
- Yeni uç noktanızı dağıtmak için dağıt düğmesini seçin.
Bilişsel Arama ile tümleştirme
Yeni oluşturulan uç noktayı Bilişsel Arama ile tümleştirmek için
- Blob kapsayıcısına tek bir otomobil kaydı içeren bir JSON dosyası ekleme
- Verileri içeri aktarma sihirbazını kullanarak yapay zeka zenginleştirme işlem hattını yapılandırın. Aşağıdaki gibi bir seçim
JSON
yapmaya özen gösterin:parsing mode
-
Add Enrichments
Sekmesinde yer tutucu olarak tek bir beceriExtract people names
seçin. - dizinine türünde
Edm.Double
adlıpredicted_price
yeni bir alan ekleyin ve Alınabilir özelliğini true olarak ayarlayın. - veri içeri aktarma işlemini tamamlama
AML Becerisini beceri kümesine ekleme
Beceri kümeleri listesinden oluşturduğunuz beceri kümesini seçin. Şimdi, fiyatları tahmin etmek için kişi tanımlama becerisini AML becerisiyle değiştirmek için beceri kümesini düzenleyebilirsiniz.
Beceri Kümesi Tanımı (JSON) sekmesinde beceri açılan listesinden seçim yapın Azure Machine Learning (AML)
. AML becerisinin uç noktanızı bulması için çalışma alanı ve arama hizmetinin aynı Azure aboneliğinde olması gerekir.
Öğreticide daha önce oluşturduğunuz uç noktayı seçin.
Becerinin, uç noktayı dağıttığınızda yapılandırıldığı gibi URI ve kimlik doğrulama bilgileriyle doldurulduğunu doğrulayın. Beceri şablonunu kopyalayın ve beceri kümesindeki beceriyi değiştirin.
Beceriyi düzenleyerek:
- Adı geçerli bir ad olarak ayarlama
- Açıklama ekleme
- DegreesOfParallelism değerini 1 olarak ayarlayın
- Bağlamı şu şekilde ayarlayın:
/document
- Girişleri tüm gerekli girişlere ayarlayın, aşağıdaki örnek beceri tanımına bakın
- Döndürülen tahmini fiyatı yakalamak için çıkışları ayarlayın.
{
"@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
"name": "AMLdemo",
"description": "AML Designer demo",
"context": "/document",
"uri": "Your AML endpoint",
"key": "Your AML endpoint key",
"resourceId": null,
"region": null,
"timeout": "PT30S",
"degreeOfParallelism": 1,
"inputs": [
{
"name": "symboling",
"source": "/document/symboling"
},
{
"name": "make",
"source": "/document/make"
},
{
"name": "fuel-type",
"source": "/document/fuel-type"
},
{
"name": "aspiration",
"source": "/document/aspiration"
},
{
"name": "num-of-doors",
"source": "/document/num-of-doors"
},
{
"name": "body-style",
"source": "/document/body-style"
},
{
"name": "drive-wheels",
"source": "/document/drive-wheels"
},
{
"name": "engine-location",
"source": "/document/engine-location"
},
{
"name": "wheel-base",
"source": "/document/wheel-base"
},
{
"name": "length",
"source": "/document/length"
},
{
"name": "width",
"source": "/document/width"
},
{
"name": "height",
"source": "/document/height"
},
{
"name": "curb-weight",
"source": "/document/curb-weight"
},
{
"name": "engine-type",
"source": "/document/engine-type"
},
{
"name": "num-of-cylinders",
"source": "/document/num-of-cylinders"
},
{
"name": "engine-size",
"source": "/document/engine-size"
},
{
"name": "fuel-system",
"source": "/document/fuel-system"
},
{
"name": "bore",
"source": "/document/bore"
},
{
"name": "stroke",
"source": "/document/stroke"
},
{
"name": "compression-ratio",
"source": "/document/compression-ratio"
},
{
"name": "horsepower",
"source": "/document/horsepower"
},
{
"name": "peak-rpm",
"source": "/document/peak-rpm"
},
{
"name": "city-mpg",
"source": "/document/city-mpg"
},
{
"name": "highway-mpg",
"source": "/document/highway-mpg"
},
{
"name": "price",
"source": "/document/price"
}
],
"outputs": [
{
"name": "predicted_price",
"targetName": "predicted_price"
}
]
}
Dizin oluşturucu çıkış alanı eşlemelerini güncelleştirme
Dizin oluşturucu çıkış alanı eşlemeleri, dizine hangi zenginleştirmelerin kaydedileceğini belirler. Dizin oluşturucunun çıkış alanı eşlemeleri bölümünü aşağıdaki kod parçacığıyla değiştirin:
"outputFieldMappings": [
{
"sourceFieldName": "/document/predicted_price",
"targetFieldName": "predicted_price"
}
]
Artık dizin oluşturucunuzu çalıştırabilir ve özelliğin predicted_price
dizinde AML beceri çıkışınızın sonucuyla doldurulduğunu doğrulayabilirsiniz.