Rasa 2.2训练是否基于用户会话?如何实现服务运行时训练?
问题解答
1. Rasa训练是否基于用户会话?
不是。Rasa的训练完全基于你在Botfront中配置的训练数据(NLU样本、对话故事、规则等),和实时用户会话没有任何关系。
你日志中同时出现训练进度和用户会话日志,是因为当前的Rasa实例同时承担了「处理用户会话请求」和「执行模型训练」两个任务——开发环境中如果没有分离训练与服务进程,就会导致两类日志混在一起输出。从日志内容也能看出:先加载了已部署的模型(用于响应用户),之后才启动新模型的训练,期间用户仍在正常连接/断开,两者只是共享了同一个日志输出通道,并非训练依赖会话数据。
附你提供的格式化日志:
2023-02-08 06:23:36 DEBUG rasa_addons.core.channels.webchat - User BMkLfyfz-39wX1NPAAit connected to socketIO endpoint. 2023-02-08 06:23:42 DEBUG rasa.utils.tensorflow.models - Finished building tensorflow prediction graph. 2023-02-08 06:23:42 DEBUG rasa.core.nlg.generator - Instantiated NLG to 'GraphQLNaturalLanguageGenerator'. 2023-02-08 06:23:42 DEBUG rasa.server -Successfully loaded model 'model-5pcXs4w7mJuwRH5C7.tar.gz'. Epochs: 18%|█▊ | 9/50 [04:05<17:36, 25.78s/it, t_loss=1.653, loss=0.690, acc=0.998]2023-02-08 06:24:00 DEBUG rasa_addons.core.channels.webchat - User tRpkKF7BlMZm8PNPAAip disconnected from socketIO endpoint. 2023-02-08 06:24:03 DEBUG rasa_addons.core.channels.webchat - User l4aoVZpt-xzfb6pvAAiv connected to socketIO endpoint. 2023-02-08 06:24:04 DEBUG rasa_addons.core.channels.graphql - fetching endpoints and credentials at http://botfront-app:3000/graphql 2023-02-08 06:24:04 DEBUG rasa_addons.core.channels.webchat - User l4aoVZpt-xzfb6pvAAiv connected to socketIO endpoint. Epochs: 22%|██▏ | 11/50 [04:36<13:15, 20.39s/it, t_loss=1.371, loss=0.427, acc=0.998]2023-02-08 06:24:37 DEBUG rasa_addons.core.channels.webchat - User f2Jmi43Qv656OJTAAAix connected to socketIO endpoint. 2023-02-08 06:24:37 DEBUG rasa_addons.core.channels.graphql - fetching endpoints and credentials at http://botfront-app:3000/graphql Epochs: 24%|██▍ | 12/50 [04:50<11:49, 18.67s/it, t_loss=1.275, loss=0.343, acc=0.999]2023-02-08 06:24:37 DEBUG rasa_addons.core.channels.webchat - User f2Jmi43Qv656OJTAAAix connected to socketIO endpoint. Epochs: 30%|███ | 15/50 [05:34<09:10, 15.73s/it, t_loss=1.094, loss=0.194, acc=0.999]2023-02-08 06:25:23 DEBUG rasa_addons.core.channels.webchat - User l4aoVZpt-xzfb6pvAAiv disconnected from socketIO endpoint.
2. 如何在服务用户的同时进行训练?
Rasa Core的训练本身就是脱离会话的,不需要依赖实时用户数据。你需要做的是分离训练进程与服务进程,让两个任务在独立的Rasa实例中执行:
部署独立的Rasa服务实例:专门用于处理用户会话,运行命令:
rasa run --enable-api --cors "*" --credentials credentials.yml --endpoints endpoints.yml在Botfront的端点配置中,将服务端点指向这个实例,确保用户请求都由它处理。
用另一个Rasa实例执行训练:在Botfront中配置训练任务时,指向专门的训练实例(或直接在Botfront后台触发训练,Botfront会自动调度训练进程)。训练完成后,将新模型部署到上述的服务实例即可(Rasa支持热加载模型,无需重启服务)。
这样就能实现用户正常访问的同时,后台独立执行模型训练,两类任务互不干扰,日志也会分开输出。
内容的提问来源于stack exchange,提问作者heroin
相关产品推荐
相关产品推荐

