не удалось развернуть модель ML в gcloud с использованием n-num - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь развернуть простую модель машинного обучения онлайн, чтобы другие могли легко получить к ней доступ онлайн. Я попытался развернуть его локально на LocalHost, и он работает хорошо. Итак, сейчас я пытаюсь развернуть его как веб-приложение с помощью gcloud.

Я успешно следовал этому https://www.freecodecamp.org/news/how-to-build-a-web-application-using-flask-and-deploy-it-to-the-cloud-3551c985e492/, хотя это не модель ML.

это вид на мой каталог проектов! (пожалуйста, нажмите для просмотра) (https://drive.google.com/open?id=1AvbZ4ERRsiS19exGPgOm8LfVjk_GWjM8)

Я использую Mac, поэтому мой python 2.7, но, поскольку я использую Jupyter Notebook, я тоже на Python 3.7. Я разрабатываю свои вещи в основном на Notebookчерез Анаконду.

Это main.py:

import numpy as np
from flask import Flask, request, jsonify, render_template
import pickle

app = Flask(__name__)
model = pickle.load(open('model.pkl', 'rb'))

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/predict',methods=['POST'])
def predict():

    int_features = [int(x) for x in request.form.values()]
    final_features = [np.array(int_features)]
    prediction = model.predict(final_features)

    output = round(prediction[0], 2)

    return render_template('index.html', prediction_text='The Forecast is  {}'.format(output))

@app.route('/results',methods=['POST'])
def results():

    data = request.get_json(force=True)
    prediction = model.predict([np.array(list(data.values()))])

    output = prediction[0]
    return jsonify(output)

if __name__ == "__main__":
    app.run(debug=True)

Это мой app.yml:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /static
  static_dir: static
- url: /.*
  script: main.app

libraries:
  - name: ssl
    version: latest

Мой appengine_conengine.py:

from google.appengine.ext import vendor
vendor.add('lib')

Это мое требование. Txt

Flask
Werkzeug
numpy
sklearn

Затем я запускаю это:

pip install -t lib -r requirements.txt

, чтобы поместить 4 необходимые библиотеки в папку с именем "lib". это потому, что когда я тестирую запуск файла main.py в Virtualenv, ему требуется Flask, numpy и sklearn для успешного развертывания на Localhost: 5000.

Однако, когда я запускаю:

gcloud app deploy 

чтобы загрузить и развернуть мой проект в gcloud, он говорит об ошибке примерно так:

1, in <module>
    import numpy as np
  File "/base/data/home/apps/n~sales-forecast-3mv3/20191110t154452.422348864415547477/lib/numpy/__init__.py", line 142, in <module>
    from . import core
  File "/base/data/home/apps/n~sales-forecast-3mv3/20191110t154452.422348864415547477/lib/numpy/core/__init__.py", line 47, in <module>
    raise ImportError(msg)
ImportError: 

Importing the numpy c-extensions failed.
- Try uninstalling and reinstalling numpy.
- If you have already done that, then:
  1. Check that you expected to use Python2.7 from "/base/alloc/tmpfs/dynamic_runtimes/python27g/79cfdbb680326abd/python27/python27_dist/python",
     and that you have no directories in your PATH or PYTHONPATH that can
     interfere with the Python and numpy version "1.17.3" you're trying to use.
  2. If (1) looks fine, you can open a new issue at
     https://github.com/numpy/numpy/issues.  Please include details on:
     - how you installed Python
     - how you installed numpy
     - your operating system
     - whether or not you have multiple versions of Python installed
     - if you built from source, your compiler versions and ideally a build log

- If you're working with a numpy git repository, try `git clean -xdf`
  (removes all files not under version control) and rebuild numpy.

Кто-нибудь, пожалуйста, помогите? Большое спасибо.

1 Ответ

0 голосов
/ 11 ноября 2019

Вы должны указать в своем app.yaml библиотеку numpy следующим образом:

app.yaml

runtime: python27
api_version: 1
threadsafe: true

handlers:
  - url: /static
    static_dir: static
  - url: /.*
    script: main.app

libraries:
  - name: ssl
    version: latest
  - name: numpy
    version: "1.6.1"
...