Нет такого файла или каталога: ‘/tmp/model /0001’ google cloud ai platform при использовании пользовательской процедуры прогнозирования

#google-cloud-platform #google-ai-platform

#google-cloud-platform #google-ai-platform

Вопрос:

Папка /tmp / model в экземпляре gcloud кажется пустой. Похоже, что файлы не были скопированы правильно из учетной записи хранилища, хотя в журнале stderr указано иное.

Пожалуйста, как мне это сделать и чего мне не хватает. Я могу успешно создать версию модели, когда я делаю запрос на прогнозирование.

сообщение об ошибке

Вот команда, используемая для создания версии модели:

 gcloud beta ai-platform versions create $VERSION_NAME  --model $MODEL_NAME  --runtime-version 1.15  --python-version 3.7  --origin gs://$BUCKET_NAME/custom_prediction_routine/model/  --package-uris gs://$BUCKET_NAME/custom_prediction_routine/custom_predict_code-0.1.tar.gz  --prediction-class predictor.MyPredictor
  

И это from_path метод класса:

 @classmethod
def from_path(cls, model_dir):
    sys.stderr.write(str(model_dir))
    return cls(model_dir)
  

Комментарии:

1. Я не думаю, что платформа AI, но не могли бы вы показать нам, как вы настроили ее для копирования файлов? если это журнал stderr, и вы имели в виду ‘/ tmp /model/0001 / там, я бы предположил, что это просто отслеживает, в каком каталоге он ожидает найти модель, и не подтверждает, что он скопировал файлы — если вы не можете показать нам код, который создает этот журнал?

2. @Rup, При создании версии модели вы должны указать ссылку на корзину облачного хранилища Google для моделей. Они обрабатывают копирование автоматически со своей стороны, мне не нужно указывать, как оно копируется. В момент прогнозирования они, в свою очередь, выдают вам каталог, в который была скопирована ваша модель. Текущая проблема сейчас заключается в том, что каталог, который они возвращают в момент прогнозирования, фактически пуст

3. Хорошо, спасибо. В основном я просил вас показать нам, что вы на самом деле делаете, чтобы кто-нибудь, кто знает об этом, мог сказать вам, что вы сделали неправильно, поскольку вы не показали нам никакой конфигурации или кода. Но, похоже, это полностью не в вашей власти, поэтому, я думаю, вам придется обратиться в службу поддержки Google.

4. Можете ли вы предоставить команду, используемую для развертывания версии, а также код метода класса «from_path»?

5. @Tlaquetzal , Вот команда, которую я использовал при создании версии модели, gcloud beta ai-platform versions create $VERSION_NAME --model $MODEL_NAME --runtime-version 1.15 --python-version 3.7 --origin gs://$BUCKET_NAME/custom_prediction_routine/model/ --package-uris gs://$BUCKET_NAME/custom_prediction_routine/custom_predict_code-0.1.tar.gz --prediction-class predictor.MyPredictor и это метод класса from path def from_path(cls, model_dir): sys.stderr.write(str(model_dir)) return cls(model_dir) Этот метод указывает неправильный путь

Ответ №1:

На основе кода, которым вы поделились, кажется, что вы не загружаете модель напрямую в from_path , а отправляете путь непосредственно к вашему экземпляру Predictor.

Попробуйте вместо этого загрузить модель непосредственно в from_path , например, используя модель keras:

 @classmethod
def from_path(cls, model_dir):
    model = keras.models.load_model(model_dir) # Load with Keras, or the appropriate format
    return cls(model)
  

Если проблема не устранена, попробуйте выполнить предварительный запрос прогнозирования изнутри from_path функции. Например:

 @classmethod
def from_path(cls, model_dir):
    model = keras.models.load_model(model_dir)
    predictor = cls(model)
    outputs = predictor.predict([[1,2,3,4,5]]) # Here goes your warm up prediction request 
    return predictor
  

Редактировать

О проблеме было сообщено здесь в системе отслеживания проблем Google. Ответ заключался в том, что как модель, так и все артефакты, которые будут использоваться из model_dir , должны быть загружены во время выполнения from_path и сохранены в классе predictor, если они собираются использоваться во время прогнозирования.

Комментарии:

1. @Tiaqueztal, спасибо за ваше предложение, я попробую это