मैं पाइथन में एज़ूर स्टोरेज ब्लॉब से मशीन लर्निंग मॉडल के लिए वजन पढ़ने की कोशिश कर रहा हूं। यह Azure फ़ंक्शंस में चलना चाहिए, इसलिए मुझे विश्वास नहीं है कि मैं उन विधियों का उपयोग करने में सक्षम हूं जो ब्लॉब को डिस्क पर सहेजते हैं।

मैं एज़ूर-स्टोरेज-ब्लॉब 12.5.0 का उपयोग कर रहा हूं, न कि विरासत संस्करण।

मैंने .pkl फ़ाइल लोड करने के लिए Dill.loads का उपयोग करने का प्रयास किया है, जैसे:

connection_string = 'my_connection_string'
blob_client = BlobClient.from_connection_string(connection_string, container_name, blob_name)
downloader = blob_client.download_blob(0)

with BytesIO() as f:
    downloader.readinto(f)
    weights = dill.loads(f)

कौन सा रिटर्न:

>>> TypeError: a bytes-like object is required, not '_io.BytesIO'

मुझे यकीन नहीं है कि अचार का उपयोग करने का तरीका कैसा होगा। इसका समाधान कैसे हो सकता है?

1
Samuel 5 अक्टूबर 2020, 12:38

2 जवाब

सबसे बढ़िया उत्तर

यहां बताया गया है कि यह समस्या कैसे हल हुई:

def get_weights_blob(blob_name):
    connection_string = 'my_connection_string'
    blob_client = BlobClient.from_connection_string(connection_string, container_name, blob_name)
    downloader = blob_client.download_blob(0)

    # Load to pickle
    b = downloader.readall()
    weights = pickle.loads(b)

    return weights

और फिर फ़ंक्शन का उपयोग करके वज़न पुनर्प्राप्त करना:

weights = get_weights_blob(blob_name = 'myPickleFile')
4
Peter Mortensen 30 सितंबर 2021, 14:20
1
धन्यवाद! मुझे बहुत सारे पुनरावृत्तियों से बचाया :)
 – 
Furqan Rahamath
9 जून 2021, 08:41

यह मेरा कामकाजी नमूना है

def main(req: func.HttpRequest) -> func.HttpResponse:

 connection_string = ''
    blob_client = BlobClient.from_connection_string(connection_string, 'blog-storage-containe', 'blobfile')
    downloader = blob_client.download_blob(0)

b = downloader.readall()
loaded_model = pickle.loads(b)

और आवश्यकताएँ.txt फ़ाइल

azure-functions
numpy
joblib
azure-storage-blob
sklearn
0
Manoj Alwis 30 जुलाई 2021, 05:59
यदि वह पायथन कोड माना जाता है, तो यह मान्य पायथन कोड (इंडेंटेशन) नहीं है।
 – 
Peter Mortensen
30 सितंबर 2021, 14:17