跳到主要内容

应用热升级

update volume

如果你的应用已经在EverAI平台云端部署,当你需要更新卷中的文件内容时,可以使用everai app updateEverAI平台支持应用热升级,你的应用服务在整个升级更新过程中,始终处于在线运行状态。

以下示例基于快速入门中的应用。

运行everai worker list,看到有一个worker正在运行中。CREATED_ATDELETED_AT使用UTC时间显示。

ID                      STATUS    DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- -------- --------------- ------------------------ ------------
kEEBkaoEaZrxPgzab2ChjQ RUNNING FREE 2024-07-05T08:41:49+0000

使用curl执行测试用例,在终端显示如下的数据信息。

curl -H'Authorization: Bearer <your_token>' https://everai.expvent.com/api/routes/v1/<your namespace>/<your app name>/show-volume
hello world
hello world

执行everai volume get get-start-volume,可以看到你的应用中使用到的卷的存放路径。

<Volume: id: R9cFpk2JgmLcuiEfgAxPRd, name: get-start-volume, revision: 000001-08a, files: 1, size: 11 B>
path: /Users/<username>/.cache/everai/volumes/R9cFpk2JgmLcuiEfgAxPRd

进入卷的所在路径,找到应用中使用到的文件my-model,打开文件修改文件内容后保存退出。在示例中,把文件内容更新为如下数据。

hello world
hello world
hello world
hello world

回到你应用的所在目录,执行everai app prepare,把更新后的文件推送到云端。

执行如下命令,完成应用的升级操作。

everai app update

再次运行everai worker list -a,看到原来的worker依然在运行中。同时一个全新的worker已经在部署中。

ID                      STATUS      DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- ---------- --------------- ------------------------ ------------------------
kEEBkaoEaZrxPgzab2ChjQ RUNNING FREE 2024-07-05T08:41:49+0000
mNTAJoqyMRHDyDoLTCSjPn CREATED IN_FLIGHT 2024-07-05T13:11:59+0000

直到系统把新的worker部署完成后,原来的worker会被停止工作。执行everai worker list -a可以看到新的worker已经处于运行状态。

ID                      STATUS      DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- ---------- --------------- ------------------------ ------------------------
kEEBkaoEaZrxPgzab2ChjQ TERMINATED 2024-07-05T08:41:49+0000 2024-07-05T13:12:23+0000
mNTAJoqyMRHDyDoLTCSjPn RUNNING FREE 2024-07-05T13:11:59+0000

再次使用curl执行测试用例,在控制台显示如下的数据信息。可以看到显示的数据信息已经完成更新。

curl -H'Authorization: Bearer <your_token>' https://everai.expvent.com/api/routes/v1/<your namespace>/<your app name>/show-volume
hello world
hello world
hello world
hello world

update image

如果你的应用已经在EverAI平台云端部署,当你需要更新你应用中的代码时,可以使用everai app updateEverAI平台支持应用热升级,你的应用服务在整个升级更新过程中,始终处于在线运行状态。

以下示例基于快速入门中的应用。

运行everai worker list,看到有一个worker正在运行中。CREATED_ATDELETED_AT使用UTC时间显示。

ID                      STATUS    DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- -------- --------------- ------------------------ ------------
PNLENbRP7AabNy6ZQWTogb RUNNING FREE 2024-07-05T06:45:19+0000

使用curl执行测试用例,在终端显示如下的数据信息。服务器端向客户端持续推送消息。

curl -H'Authorization: Bearer <your_token>' https://everai.expvent.com/api/routes/v1/<your namespace>/<your app name>/sse
hello again 0

hello again 1

hello again 2

这一步,打开app.py文件,把hello again改为hello world again。你执行everai app run确保你的代码运行正常。

import flask

@app.service.route('/sse', methods=['GET'])
def sse():
def generator():
for i in range(10):
yield f"hello world again {i}\n\n"
time.sleep(1)

return flask.Response(generator(), mimetype='text/event-stream')

打开image_builder.py文件,更新需要上传镜像的版本号。并执行everai image build进行镜像构建,并推送镜像到quay.io镜像仓库。

from everai.image import Builder

IMAGE = 'quay.io/<username>/<repo>:<tag>'

镜像构建完成后,你需要执行如下命令进行应用更新。

everai app update

运行everai worker list -a,可以看到新的worker正处于INITIALIZED状态。

ID                      STATUS       DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- ----------- --------------- ------------------------ ------------
PNLENbRP7AabNy6ZQWTogb RUNNING FREE 2024-07-05T06:45:19+0000
kEEBkaoEaZrxPgzab2ChjQ INITIALIZED IN_FLIGHT 2024-07-05T08:41:49+0000

直到新的worker处于RUNNING状态,原来的worker已经处于TERMINATED状态。

ID                      STATUS      DETAIL_STATUS    CREATED_AT                DELETED_AT
---------------------- ---------- --------------- ------------------------ ------------------------
PNLENbRP7AabNy6ZQWTogb TERMINATED 2024-07-05T06:45:19+0000 2024-07-05T08:42:28+0000
kEEBkaoEaZrxPgzab2ChjQ RUNNING FREE 2024-07-05T08:41:49+0000

再次使用curl执行测试用例,在终端控制台显示如下的数据信息。可以看到服务器端向客户端持续推送消息已经被更新。

curl -H'Authorization: Bearer <your_token>' https://everai.expvent.com/api/routes/v1/<your namespace>/<your app name>/sse
hello world again 0


hello world again 1


hello world again 2


hello world again 3

update resource

如果你的应用已经在EverAI平台云端部署,当你需要调整你的计算资源(CPU,内存,GPU卡数量或者GPU型号)时,可以使用everai app updateEverAI平台支持应用热升级,你的应用服务在整个升级更新过程中,始终处于在线运行状态。

打开app.py文件,在通过App类来创建定义一个app实例的代码中,修改resource_requests参数:

resource_requests=ResourceRequests(
cpu_num=2,
memory_mb=20480,
gpu_num=1,
gpu_constraints=[
"A100 40G",
"RTX 4090"
],
)

保存退出app.py文件后,执行如下命令,完成应用计算资源的调整。

everai app update

运行everai worker list -a,看到原来在运行的worker正处于TERMINATED状态,新的worker已经在运行中。