Я использую Google Cloud Platform и Google App Engine (гибкий) для моего чата Rasa Opensource.
Я скачал Google Cloud SDK на свой локальный компьютер и развернул чат-бота, используя gcloud app deploy
для App Engine (думаю, я прав, что это создает docker образ).
App Engine требуется Dockerfile и файл app.yaml. Я просто не был уверен, что должно go в Dockerfile. А некоторые проблемы указывают на конечную точку модели, где она не считает, что это zip-файл.
Файл Docker выглядит так:
FROM rasa/rasa
ENV BOT_ENV=production
COPY . /var/www
WORKDIR /var/www
RUN pip install rasa
ENTRYPOINT [ "rasa", "run", "-m", "./models", "-vv", "--enable-api", "--endpoints", "endpoints.yml", "--credentials", "credentials.yml", "-p", "8080"]
C:\Users\xxxxxxxx\Desktop\xxxxxxxxx>gcloud app deploy --version chatbot15
Services to deploy:
descriptor: [C:\Users\xxxxxx\Desktop\xxxxxxxxx\app.yaml]
source: [C:\Users\xxxxxx\Desktop\xxxxxxxx]
target project: [xxxxx-xxxxxxx]
target service: [default]
target version: [chatbot15]
target url: [https://xxxxxxxx.appspot.com]
Do you want to continue (Y/n)? y
Beginning deployment of service [default]...
Building and pushing image for service [default]
Started cloud build [.
To see logs in the Cloud Console: https://console.cloud.google.com/gcr/builds/xxxxxx41f1f-c289-xxxxxxx-9ba1-xxxxxxxxxxx]
------------------------------------------------- REMOTE BUILD OUTPUT --------------------------------------------------
starting build "xxxxxx41f1f-c289-xxxxxxx-9ba1-xxxxxxxxxxx]"
FETCHSOURCE
Fetching storage object: gs://staging.xxxxxxxxxx.appspot.com/us.gcr.io/xxxxxxxxxx/appengine/default.chatbot15:latest#1xxxxxxxxxxx0
Copying gs://staging.xxxxxxxxxxx.appspot.com/us.gcr.io/xxxxxxxxxx/appengine/default.chatbot15:latest#158xxxxxxxxxx2560...
\ [1 files][ 24.3 MiB/ 24.3 MiB]
Operation completed over 1 objects/24.3 MiB.
BUILD
Already have image (with digest): gcr.io/cloud-builders/docker
Sending build context to Docker daemon 38.15MB
Step 1/6 : FROM rasa/rasa
latest: Pulling from rasa/rasa
Digest: sha256:cc6a48c7cxxxc8f1c8c3bxxxxxxxxxxxxxxxxef266a58121f41e22b418c6a
Status: Downloaded newer image for rasa/rasa:latest
---> fcf204982b0f
Step 2/6 : ENV BOT_ENV=production
---> Running in 708a75c57f16
Removing intermediate container 708a75c57f16
---> 780c38217741
Step 3/6 : COPY . /var/www
---> a32cfeb03a84
Step 4/6 : WORKDIR /var/www
---> Running in 4f4f0446c8a4
Removing intermediate container 4f4f0446c8a4
---> 1751f3ffc062
Step 5/6 : RUN pip install rasa
---> Running in b70c61ca4670
[91mWARNING: The directory '/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
[0mRemoving intermediate container b70cxxxx670
---> 3e8xxx0f91c
Step 6/6 : ENTRYPOINT [ "rasa", "run", "-m", "./models", "-vv", "--enable-api", "--endpoints", "endpoints.yml", "--credentials", "credentials.yml", "-p", "8080"]
---> Running in 4xxxxxx6
Removing intermediate container 4xxxxxxxxxx6
---> 6fxxxxxxxxx30
Successfully built 6xxxxxxxxxxx30
Successfully tagged us.gcr.io/xxxxxxxxxx/appengine/default.chatbot15:latest
PUSH
Pushing us.gcr.io/xxxxxxxxxxx/appengine/default.chatbot15:latest
The push refers to repository [us.gcr.io/xxxxxxxxxxx/appengine/default.chatbot15]
0da5206fa56e: Pushed
latest: digest: sha256:d1cxxxxxxxxxxxxxxxxxxxxxxxx724xxxxxx size: 2837
DONE
------------------------------------------------------------------------------------------------------------------------
Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
2020-01-27 19:54:37 DEBUG rasa.core.utils - Available web server routes:
/conversations/<conversation_id>/messages POST add_message
/conversations/<conversation_id>/tracker/events POST append_events
/webhooks/rasa GET custom_webhook_RasaChatInput.health
/webhooks/rasa/webhook POST custom_webhook_RasaChatInput.receive
/webhooks/rest GET custom_webhook_RestInput.health
/webhooks/rest/webhook POST custom_webhook_RestInput.receive
/model/test/intents POST evaluate_intents
/model/test/stories POST evaluate_stories
/conversations/<conversation_id>/execute POST execute_action
/domain GET get_domain
/socket.io GET handle_request
/ GET hello
/model PUT load_model
/model/parse POST parse
/conversations/<conversation_id>/predict POST predict
/conversations/<conversation_id>/tracker/events PUT replace_events
/conversations/<conversation_id>/story GET retrieve_story
/conversations/<conversation_id>/tracker GET retrieve_tracker
/webhooks/socketio GET socketio_webhook.health
/status GET status
/model/predict POST tracker_predict
/model/train POST train
/conversations/<conversation_id>/trigger_intent POST trigger_intent
/model DELETE unload_model
/version GET version
2020-01-27 19:54:37 INFO root - Starting Rasa server on http://localhost:8080
2020-01-27 19:54:37 DEBUG rasa.core.utils - Using the default number of Sanic workers (1).
2020-01-27 19:54:37 INFO root - Enabling coroutine debugging. Loop id 94796527495608.
2020-01-27 19:54:37 DEBUG rasa.model - Extracted model to '/tmp/tmpq4hewp3_'.
2020-01-27 19:54:41.930821: E tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit: UNKNOWN ERROR (303)
2020-01-27 19:54:42 DEBUG rasa.core.tracker_store - Connected to InMemoryTrackerStore.
2020-01-27 19:54:42 DEBUG rasa.core.lock_store - Connected to lock store 'InMemoryLockStore'.
2020-01-27 19:54:42 DEBUG rasa.core.nlg.generator - Instantiated NLG to 'TemplatedNaturalLanguageGenerator'.
2020-01-27 19:54:42 DEBUG rasa.core.agent - Requesting model from server http://xxxxxxxxxxx.appspot.com/?hl=en-GB/models/20200123-205743.tar.gz...
2020-01-27 19:54:42 ERROR rasa.core.agent - Could not load model due to File is not a zip file.
[2020-01-27 19:54:42 +0000] [1] [ERROR] Experienced exception while trying to serve
Traceback (most recent call last):
File "/build/lib/python3.6/site-packages/rasa/utils/io.py", line 195, in unarchive
tar = tarfile.open(fileobj=IOReader(byte_array))
File "/usr/local/lib/python3.6/tarfile.py", line 1576, in open
raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/build/lib/python3.6/site-packages/sanic/app.py", line 1133, in run
serve(**server_settings)
File "/build/lib/python3.6/site-packages/sanic/server.py", line 857, in serve
trigger_events(before_start, loop)
File "/build/lib/python3.6/site-packages/sanic/server.py", line 634, in trigger_events
loop.run_until_complete(result)
File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
File "/build/lib/python3.6/site-packages/rasa/core/run.py", line 247, in load_agent_on_start
action_endpoint=endpoints.action,
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 248, in load_agent
model_server,
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 64, in load_from_server
await _update_model_from_server(model_server, agent)
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 122, in _update_model_from_server
model_server, agent.fingerprint
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 180, in _pull_model_and_fingerprint
rasa.utils.io.unarchive(await resp.read(), model_directory)
File "/build/lib/python3.6/site-packages/rasa/utils/io.py", line 200, in unarchive
zip_ref = zipfile.ZipFile(IOReader(byte_array))
File "/usr/local/lib/python3.6/zipfile.py", line 1131, in __init__
self._RealGetContents()
File "/usr/local/lib/python3.6/zipfile.py", line 1198, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
Traceback (most recent call last):
File "/build/lib/python3.6/site-packages/rasa/utils/io.py", line 195, in unarchive
tar = tarfile.open(fileobj=IOReader(byte_array))
File "/usr/local/lib/python3.6/tarfile.py", line 1576, in open
raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/build/bin/rasa", line 8, in <module>
sys.exit(main())
File "/build/lib/python3.6/site-packages/rasa/__main__.py", line 76, in main
cmdline_arguments.func(cmdline_arguments)
File "/build/lib/python3.6/site-packages/rasa/cli/run.py", line 83, in run
rasa.run(**vars(args))
File "/build/lib/python3.6/site-packages/rasa/run.py", line 56, in run
**kwargs,
File "/build/lib/python3.6/site-packages/rasa/core/run.py", line 206, in serve_application
endpoints.lock_store if endpoints else None
File "/build/lib/python3.6/site-packages/sanic/app.py", line 1133, in run
serve(**server_settings)
File "/build/lib/python3.6/site-packages/sanic/server.py", line 857, in serve
trigger_events(before_start, loop)
File "/build/lib/python3.6/site-packages/sanic/server.py", line 634, in trigger_events
loop.run_until_complete(result)
File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
File "/build/lib/python3.6/site-packages/rasa/core/run.py", line 247, in load_agent_on_start
action_endpoint=endpoints.action,
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 248, in load_agent
model_server,
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 64, in load_from_server
await _update_model_from_server(model_server, agent)
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 122, in _update_model_from_server
model_server, agent.fingerprint
File "/build/lib/python3.6/site-packages/rasa/core/agent.py", line 180, in _pull_model_and_fingerprint
rasa.utils.io.unarchive(await resp.read(), model_directory)
File "/build/lib/python3.6/site-packages/rasa/utils/io.py", line 200, in unarchive
zip_ref = zipfile.ZipFile(IOReader(byte_array))
File "/usr/local/lib/python3.6/zipfile.py", line 1131, in __init__
self._RealGetContents()
File "/usr/local/lib/python3.6/zipfile.py", line 1198, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
Спасибо.