Soy un principiante en AWS y entrené en mi computadora un RandomForestClassifier con scikit-learn y usé joblib para obtener mi modelo en formato pkl.
Ahora me gustaría reutilizar este RandomForest en AWS Lambda. Dado que necesita sklearn.externals para cargar mi modelo nuevamente, creé un directorio Zip que contiene Numpy, Scipy, sklearn, mi código y mi modelo en formato pkl. Puse este zip en un depósito S3 para ejecutar mi código en Lambda.
Me gustaría saber si entonces, ¿es posible usar este modelo usando model.predict() ? No encontré ninguna documentación sobre este problema específico.
En realidad, tengo éxito usando URL. Puse mi modelo .pkl en un S3 Bucket y puedo obtenerlo usando urllib2.
Aquí está mi código, si alguien alguna vez encuentra el mismo problema:
req = urllib2.Request(url=url_model) f = urllib2.urlopen(req) model = cPickle.load(f)Solo funciona si el archivo es público. Si necesita que sea privado, puede generar una URL prefirmada usando boto3 como este:
url_model = s3.generate_presigned_url( ClientMethod='get_object', ExpiresIn=1, Params={ 'Bucket': 'my-bucket', 'Key': 'mymodel.pkl' } )