From 8ff2759af2e11b0e5deff4698b3350f8ea6739f7 Mon Sep 17 00:00:00 2001 From: NuODaniel Date: Thu, 25 Jul 2024 13:24:06 +0800 Subject: [PATCH] fix: remove useless or ambiguous content (#690) * fix: remove ipynb useless content * fix: replace ERNIE-Bot description * fix: add trainer cli info docs & remove ernie-bot in ipynb --- README.md | 10 +- cookbook/README.md | 8 +- cookbook/auto_truncate_msg.ipynb | 20 +- .../awesome_demo/essay_scoring/main.ipynb | 20 +- cookbook/awesome_demo/role_play/main.ipynb | 976 +----------------- cookbook/batch_prediction.ipynb | 6 +- cookbook/eb_search.ipynb | 39 +- cookbook/essay_correction.ipynb | 292 +----- cookbook/finetune/trainer_finetune.ipynb | 2 +- cookbook/function_call.ipynb | 61 +- cookbook/function_call_with_tool.ipynb | 11 +- cookbook/langchain_sequential.ipynb | 51 +- cookbook/openai_adapter.ipynb | 6 +- docs/batch_inference.md | 2 +- docs/cli.md | 33 +- docs/data.md | 28 +- docs/go/inference.md | 22 +- docs/inference.md | 6 +- docs/javascript/browser.md | 8 +- docs/semantic_kernel.md | 4 +- docs/tool.md | 2 +- docs/trainer.md | 11 +- docs/utils.md | 4 +- go/README.md | 10 +- go/examples/function_call/main.go | 2 +- go/qianfan/chat_completion.go | 32 +- go/qianfan/completion.go | 2 +- go/qianfan/version.go | 2 +- java/README.md | 4 +- javascript/README.md | 6 +- python/README.pypi.md | 4 +- python/qianfan/common/client/plugin.py | 4 +- python/qianfan/common/prompt/prompt.py | 2 +- .../qianfan/common/tool/baidu_search_tool.py | 2 +- python/qianfan/resources/console/finetune.py | 4 +- python/qianfan/resources/tools/tokenizer.py | 10 +- python/qianfan/tests/langchain/agent_test.py | 8 +- python/qianfan/tests/trainer_test.py | 4 +- python/qianfan/tests/utils/mock_server.py | 55 +- python/qianfan/trainer/actions.py | 4 +- python/qianfan/trainer/post_pretrain.py | 2 +- 41 files changed, 321 insertions(+), 1458 deletions(-) diff --git a/README.md b/README.md index 0224b521..27fc2860 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ 千帆 SDK 提供大模型工具链最佳实践,让 AI 工作流和 AI 原生应用优雅且便捷地访问千帆大模型平台。SDK 核心能力包含三大部分:大模型推理,大模型训练,以及通用和扩展: -- `大模型推理`:实现了对一言(ERNIE-Bot)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding 等。 +- `大模型推理`:实现了对一言(ERNIE)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding 等。 - `大模型训练`:基于平台能力支持端到端的大模型训练过程,包括训练数据,精调/预训练,以及模型托管等。 - `通用与扩展`:通用能力包括了 Prompt/Debug/Client 等常见的 AI 开发工具。扩展能力则基于千帆特性适配常见的中间层框架。 @@ -213,18 +213,18 @@ ds.save(qianfan_dataset_id="your_dataset_id") #### Trainer 千帆 Python SDK 以Pipeline为基础串联整个模型训练的流程,同时允许用户更好的把控训练流程状态 [Trainer 框架](./docs/trainer.md)。 -以下是一个快速实现ERNIE-Bot-turbo fine-tuning的例子: +以下是一个快速实现ERNIE-Speed-8K fine-tuning的例子: ```python from qianfan.dataset import Dataset -from qianfan.trainer import LLMFinetune +from qianfan.trainer import Finetune # 加载千帆平台上的数据集 ds: Dataset = Dataset.load(qianfan_dataset_id="ds-xxx") # 新建trainer LLMFinetune,最少传入train_type和dataset # 注意fine-tune任务需要指定的数据集类型要求为有标注的非排序对话数据集。 -trainer = LLMFinetune( - train_type="ERNIE-Bot-turbo-0725", +trainer = Finetune( + train_type="ERNIE-Speed-8K dataset=ds, ) diff --git a/cookbook/README.md b/cookbook/README.md index 25df3ddb..8d793df2 100644 --- a/cookbook/README.md +++ b/cookbook/README.md @@ -19,9 +19,9 @@ | | [千帆 与 Weights & Biases](./wandb/wandb.ipynb) | Weights & Biases 提供了一个平台,可以对大模型的调用过程进行可视化的展现,跟踪每次请求对资源的消耗等等,尤其是在开发 Agent 等涉及到复杂的模型调用时,可以帮助开发者更好地观察模型效果并进一步去改进模型。 本文将介绍如何利用 LangChain,将千帆SDK的调用导入 Weights & Biases。 | | | [知识库问答](./RAG/question_anwsering/question_answering.ipynb) | 展示了如何使用 Langchian + 千帆 SDK 完成对特定文档完成获取、切分、转为向量并存储,并在之后的对话中根据所提供的文本生成回复。 | | | | [Weights & Biases](./RAG/wandb.ipynb) | 展示了如何将千帆模型对接至 Weights & Biases,并使用其提供的可视化能力进行模型训练过程监控。 | | -| agent | [function call langchain_agent_with_qianfan_llm](./agents/langchain_agent_with_qianfan_llm.ipynb) | function_call,顾名思义,通过给大模型提供 function 的说明描述,以及对应的入参出参 schema,让大模型输出 function 调用策略,结合多轮对话,以最终实现一个复杂的任务。 以下将以天气获取为例子,通过千帆 Python SDK提供的 ERNIE-Bot 大模型以实现通过大模型得到对应城市的天气情况。 | +| agent | [function call langchain_agent_with_qianfan_llm](./agents/langchain_agent_with_qianfan_llm.ipynb) | function_call,顾名思义,通过给大模型提供 function 的说明描述,以及对应的入参出参 schema,让大模型输出 function 调用策略,结合多轮对话,以最终实现一个复杂的任务。 以下将以天气获取为例子,通过千帆 Python SDK提供的 ERNIE 大模型以实现通过大模型得到对应城市的天气情况。 | | | [千帆agent介绍使用 qianfan_single_action_agent_example](./agents/qianfan_single_action_agent_example.ipynb) | 以 Function Call 功能实现的千帆 Agent 模块 | -| | [千帆 function call 入门](./function_call.ipynb) | 以获取数据库中某类文件的数量为例子,通过调用千帆 Python SDK提供的 ERNIE-Bot 大模型以得到数据库中该语言的文件数量。 | +| | [千帆 function call 入门](./function_call.ipynb) | 以获取数据库中某类文件的数量为例子,通过调用千帆 Python SDK提供的 ERNIE 大模型以得到数据库中该语言的文件数量。 | | | [千帆function_call工具调用](./function_call_with_tool.ipynb) | 上一节千帆function_call入门展示了实现chat调用函数的功能,本节将介绍如何让chat与千帆工具进行交互,并编写更便利的调用函数。 | | extensions | [Semantic Kernel Planner](./extensions/semantic_kernel/agent_with_sk.ipynb) | qianfan + planner实现一个简单的demo,整体规划多步plan,在串联进行执行 | | | [Semantic Kernel](./extensions/semantic_kernel/chatbot_with_sk.ipynb) | SK+千帆SDK以实现一个基于SK Plugin的多轮对话ChatBot. | @@ -49,7 +49,7 @@ | finetune |[end-to-end的LLMops流程中的数据->SFT微调->发布->推理流程,使用的SDK版本为0.1.3。](./finetune/api_based_finetune.ipynb) | | | | [直接使用bos进行sft并进行评估](./finetune/finetune_with_bos_and_evaluate.ipynb) | | | | [使用文生图数据集进行模型微调](./finetune/text2image_finetune.ipynb) | | -| | [Trainer全流程使用](./finetune/trainer_finetune.ipynb) | 本例将基于qianfan==0.2.2展示通过Dataset加载本地数据集,并上传到千帆平台,基于ERNIE-Bot-turbo进行fine-tune,并使用Model进行批量跑评估数据,直到最终完成服务发布,并最终实现服务调用的完整过程。 | +| | [Trainer全流程使用](./finetune/trainer_finetune.ipynb) | 本例将基于qianfan SDK展示通过Dataset加载本地数据集,并上传到千帆平台,基于ERNIE-Speed-8K进行fine-tune,并使用Model进行批量跑评估数据,直到最终完成服务发布,并最终实现服务调用的完整过程。 | | | [Trainer事件回调和可恢复性](./finetune/trainer_finetune_event_resume.ipynb) | 千帆Python SDK 在使用trainer 实现训练微调的基础上,SDK还提供了灵活的事件回调、以及trainer的可恢复的特性,以下以新建训练任务,并注册EventHandler,遇到报错之后进行resume进行演示。 | | 推理 |[大模型推理配置自动推荐](./autotuner/tune.ipynb) | SDK 提供了推理配置自动推荐的功能,只需要提供目标场景的数据集及评估方式,设定搜索空间,SDK 就可以根据以上信息推荐出参数的配置 | | | [批量预测](./batch_prediction.ipynb) | 利用 SDK 内置的批量推理功能,在本地通过并行调用模型接口实现高效的批量预测。 | @@ -59,5 +59,5 @@ | Prompt | [Prompt使用](./prompt.ipynb) | 千帆提供了 Prompt 管理功能,可以快速地使用平台预置的优质 Prompt,或者保存用户自定义的 Prompt。SDK 也为用户快速使用 Prompt 提供了辅助。 | | | [SDXL Prompt优化](./sdxl_prompt_optimize/prompt_optimize.ipynb) | 展示了如何使用LLM进行文生图模型SDXL的Prompt优化以获得更好的图片质量和query关联度 | | 其他 | [千帆 Hub](./hub.ipynb) | | -| | [ERNIE Bot 搜索能力](./eb_search.ipynb) | | +| | [ERNIE 搜索能力](./eb_search.ipynb) | | | | [SDK 自动遗忘过长的对话历史](./auto_truncate_msg.ipynb) | | diff --git a/cookbook/auto_truncate_msg.ipynb b/cookbook/auto_truncate_msg.ipynb index dd3cd6b1..cae474bf 100644 --- a/cookbook/auto_truncate_msg.ipynb +++ b/cookbook/auto_truncate_msg.ipynb @@ -57,7 +57,7 @@ } ], "source": [ - "resp = qianfan.ChatCompletion(model=\"ERNIE-Bot\").do(messages, truncate_overlong_msgs=True)" + "resp = qianfan.ChatCompletion(model=\"ERNIE-3.5-8K\").do(messages, truncate_overlong_msgs=True)" ] }, { @@ -111,7 +111,7 @@ } ], "source": [ - "qianfan.ChatCompletion.get_model_info(\"ERNIE-Bot\").max_input_chars" + "qianfan.ChatCompletion.get_model_info(\"ERNIE-3.5-8K\").max_input_chars" ] }, { @@ -133,18 +133,11 @@ "source": [ "qianfan.ChatCompletion.get_model_info(\"ERNIE-Speed\").max_input_tokens" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "py311", + "display_name": "py11", "language": "python", "name": "python3" }, @@ -158,7 +151,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.9" + }, + "vscode": { + "interpreter": { + "hash": "42453736f0d03c53e6ad75478ebb5fcf2abe6d38094996bfa938cecc75099885" + } } }, "nbformat": 4, diff --git a/cookbook/awesome_demo/essay_scoring/main.ipynb b/cookbook/awesome_demo/essay_scoring/main.ipynb index 4eee38ac..4cd7a06c 100644 --- a/cookbook/awesome_demo/essay_scoring/main.ipynb +++ b/cookbook/awesome_demo/essay_scoring/main.ipynb @@ -2810,11 +2810,22 @@ "for s in result:\n", " print(s['result'])" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "Dataset.map_reduce" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "base", "language": "python", "name": "python3" }, @@ -2828,7 +2839,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.18" + "version": "3.11.8" + }, + "vscode": { + "interpreter": { + "hash": "58f7cb64c3a06383b7f18d2a11305edccbad427293a2b4afa7abe8bfc810d4bb" + } } }, "nbformat": 4, diff --git a/cookbook/awesome_demo/role_play/main.ipynb b/cookbook/awesome_demo/role_play/main.ipynb index e13989c6..e67a311a 100644 --- a/cookbook/awesome_demo/role_play/main.ipynb +++ b/cookbook/awesome_demo/role_play/main.ipynb @@ -831,466 +831,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 0\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 1\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 2\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 3\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 4\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 5\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 6\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 7\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 8\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 9\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 10\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 11\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 12\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 13\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 14\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 15\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 16\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 17\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 18\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 19\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 20\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 21\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 22\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 23\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 24\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 25\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 26\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 27\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 28\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 29\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 30\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 31\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 32\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 33\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 34\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 35\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 36\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 37\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 38\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 39\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 40\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 41\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 42\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 43\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 44\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 45\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 46\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 47\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 48\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 49\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 50\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 51\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 52\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 53\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 54\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 55\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 56\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 57\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 58\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 59\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 60\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 61\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 62\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 63\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 64\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 65\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 66\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 67\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 68\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 69\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 70\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 71\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 72\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 73\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 74\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 75\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 76\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 77\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 78\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 79\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 80\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 81\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 82\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 83\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 84\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 85\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 86\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 87\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 88\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 89\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 90\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 91\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 92\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 93\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 94\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 95\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 96\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 97\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 98\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 99\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 100\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 101\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 102\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 103\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 104\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 105\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 106\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 107\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 108\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 109\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 110\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 111\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 112\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 113\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 114\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 115\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 116\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 117\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 118\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 119\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 120\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 121\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 122\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 123\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 124\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 125\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 126\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 127\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 128\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 129\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 130\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 131\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 132\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 133\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 134\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 135\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 136\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 137\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 138\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 139\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 140\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 141\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 142\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 143\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 144\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 145\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 146\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 147\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 148\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 149\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 150\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 151\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 152\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 153\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 154\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 155\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 156\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 157\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 158\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 159\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 160\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 161\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 162\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 163\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 164\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 165\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 166\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 167\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 168\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 169\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 170\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 171\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 172\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 173\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 174\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 175\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 176\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 177\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 178\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 179\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 180\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 181\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 182\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 183\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 184\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 185\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 186\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 187\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 188\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 189\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 190\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 191\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 192\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 193\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 194\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 195\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 196\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 197\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 198\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 199\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 200\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 201\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 202\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 203\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 204\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 205\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 206\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 207\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 208\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 209\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 210\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 211\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 212\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 213\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 214\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 215\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 216\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 217\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 218\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 219\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 220\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 221\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 222\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 223\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 224\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 225\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 226\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 227\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 228\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 229\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 230\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 231\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 232\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 233\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 234\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 235\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 236\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 237\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 238\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 239\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 240\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 241\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 242\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 243\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 244\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 245\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 246\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 247\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 248\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 249\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 250\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 251\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 252\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 253\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 254\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 255\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 256\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 257\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 258\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 259\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 260\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 261\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 262\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 263\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 264\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 265\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 266\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 267\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 268\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 269\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 270\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 271\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 272\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 273\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 274\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 275\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 276\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 277\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 278\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 279\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 280\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 281\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 282\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 283\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 284\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 285\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 286\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 287\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 288\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 289\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 290\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 291\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 292\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 293\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 294\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 295\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 296\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 297\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 298\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 299\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 300\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 301\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 302\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 303\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 304\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 305\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 306\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 307\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 308\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 309\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 310\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 311\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 312\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 313\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 314\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 315\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 316\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 317\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 318\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 319\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 320\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 321\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 322\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 323\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 324\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 325\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 326\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 327\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 328\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 329\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 330\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 331\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 332\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 333\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 334\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 335\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 336\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 337\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 338\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 339\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 340\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 341\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 342\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 343\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 344\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 345\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 346\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 347\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 348\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 349\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 350\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 351\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 352\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 353\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 354\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 355\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 356\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 357\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 358\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 359\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 360\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 361\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 362\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 363\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 364\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 365\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 366\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 367\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 368\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 369\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 370\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 371\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 372\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 373\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 374\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 375\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 376\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 377\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 378\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 379\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 380\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 381\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 382\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 383\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 384\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 385\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 386\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 387\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 388\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 389\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 390\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 391\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 392\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 393\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 394\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 395\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 396\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 397\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 398\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 399\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 400\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 401\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 402\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 403\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 404\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 405\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 406\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 407\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 408\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 409\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 410\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 411\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 412\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 413\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 414\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 415\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 416\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 417\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 418\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 419\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 420\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 421\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 422\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 423\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 424\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 425\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 426\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 427\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 428\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 429\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 430\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 431\n", - "[INFO] [06-12 18:02:42] dataset.py:993 [t:8149425664]: list local dataset data by 432\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "defaultdict(, {'zhubajie': 67, 'jiabaoyu': 86, 'likui': 28, 'tangsanzang': 65, 'songjiang': 35, 'sunwukong': 89, 'wusong': 47, 'wuyong': 15})\n" - ] - }, - { - "data": { - "image/png": "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EKM9UkgqXbq0Bg0apBs3briXXb9+XW+99ZZKly792IoDAAAAgKj2SMPtRo0aperVqytDhgwqVKiQJGnnzp3y8/PTDz/88FgLBAAAAICo9EghqUCBAjp06JBmzJihX375RZLUpEkTNW3aVP7+/o+1QAAAAACISo8UkoYPH640adKoXbt2HssnT56sc+fO6Y033ngsxQEAAABAVHuke5I+/fRT5c6dO9LyfPnyafz48f+6KAAAAADwlkcKSadPn1a6dOkiLU+VKpVOnTr1r4sCAAAAAG95pJCUMWNGrVu3LtLydevWKTAw8F8XBQAAAADe8kj3JLVr105du3bVrVu3VKlSJUnSihUr1KtXL/Xo0eOxFggAAAAAUemRQlLPnj114cIFvfLKK7p586YkKX78+HrjjTfUp0+fx1ogAAAAAESlRwpJLpdLI0aM0IABA7R//375+/srR44c8vPze9z1AQAAAECUeqSQdFeiRIlUokSJx1ULAAAAAHjdI03cAAAAAACxFSEJAAAAABwISQAAAADgQEgCAAAAAAdCEgAAAAA4EJIAAAAAwIGQBAAAAAAO0SYkvfPOO3K5XOratat72Y0bN9SpUyelSJFCiRIlUoMGDXTmzBnvFQkAAAAg1osWIennn3/Wp59+qoIFC3os79atm7777jvNmTNHq1ev1h9//KHnn3/eS1UCAAAAeBJ4PSRdvXpVTZs21cSJE5UsWTL38suXL2vSpEkaOXKkKlWqpGLFimnKlClav369Nm7c6MWKAQAAAMRmXg9JnTp1Uq1atVSlShWP5Vu3btWtW7c8lufOnVuZMmXShg0borpMAAAAAE+ION784bNmzdK2bdv0888/R1p3+vRpxYsXT0mTJvVYniZNGp0+ffq+rxkWFqawsDD39yEhIY+tXgAAAACxn9euJJ04cUKvvfaaZsyYofjx4z+21x0+fLgCAgLcXxkzZnxsrw0AAAAg9vNaSNq6davOnj2rokWLKk6cOIoTJ45Wr16tjz/+WHHixFGaNGl08+ZNXbp0yWO7M2fOKG3atPd93T59+ujy5cvurxMnTvzHvwkAAACA2MRrw+0qV66s3bt3eyxr1aqVcufOrTfeeEMZM2ZU3LhxtWLFCjVo0ECSdODAAR0/flylS5e+7+v6+fnJz8/vP60dAAAAQOzltZCUOHFi5c+f32NZwoQJlSJF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lChRIvn4+Cg0NFTSnYk44sePr+nTpyt+/PgaM2aMPv30U/c9Sri/w4cP68KFC+7vEyZMqCZNmqhu3bp68803NXjwYC9WFzvca/hu5syZVaxYMY0ZM0ahoaHy8fGRmSkgIEC5cuVSkiRJ1KBBA/ekR8awsUh8fX31+++/e8wMGDduXI9hYMHBwZIYevdvpU+fXk8//bTGjh2rixcvut+TSZIkUc6cOZU+fXoFBwdr586dT9Tn5pPzm+KBtW/fXrdv31bq1Knl6+ur1atXq0SJEhozZowkqW3btsqTJ498fX2VLl06HTt2TPv371eTJk109uxZvfXWW17+DWKuq1evatq0aTp9+rTKlCmjxYsXa+nSpWrbtq127Nihc+fOac6cOSpYsKDmzp0rX19fhYeHe7tsr3N+OJqZ0qZNq3feeUetW7dW3bp1PYLSyy+/rA0bNuiVV17xYsW4614HmPHixVPSpEm1dOlSSXcm4rj7Pi9cuLASJEigOXPmaPXq1ZK4gVu6dz8mTpxYL730klasWKHNmze7lydJkkT58+dXzZo1NWzYMH3yySdRWWqs4pyk4fDhwx735rZv315//vmnXn/9dZmZ+0A+IiJCEyZMUIkSJdSzZ0/dunXLW+VHa76+vmrdurX279+vb7/91r08Tpw4ypUrl1588UWtWbNGr732miRmvXtYBw8e1C+//OL+vk2bNrp586Zef/11Xb9+XT4+Prp9+7auXbvmvkepd+/eCgsLe2L2uYQkeDh48KBOnTrl8QcQFBSkPn36aODAgRo9erQkad68eSpZsqTefPNN5cqVS61bt1ZoaKg2bNjgcUCDh1O1alWFhobq0KFDkqQyZcroxx9/1Lp161SjRg0VLVpUv/32m9q1a+fextfX11vlRhsul0srV67U5s2b3QciadKk0cCBA9WhQwfVrVtXS5YsUcKECRUcHKz+/furX79+3i77iec8wNy1a5eOHz+uU6dOyd/fX6NHj9by5cvVsWNH3bp1y/3vamYaNmyYwsLCNH78eEkcHDn7cceOHVq3bp17H1y9enXFixdPo0ePdgelK1euaM+ePWrQoIE6dOigr776Sn/++ecTc+DzON3t9969e6t27doqUKCA2rdvr507d6phw4Zq2rSpNmzYoLx58+qVV17RU089pUOHDqlMmTLKnj27bt68qbhx4z7x7+G71qxZo++++06nTp2SJFWqVEkZM2bUxIkTNXfuXEnSxYsXtWzZMhUrVkyvvfaaVq5cqZMnT3qz7BjnjTfeUO3atVWkSBE1a9ZMmzdvVt26ddWyZUvt3r1b+fLlU+vWrVWyZEkdPnxY5cqVU7Zs2XT79m35+fk9Oe9XLwzxQwwxefJkCwsLM7M741UHDBhgiRMnto8++sjdZvv27bZw4ULbuXOne5zq3RvjcX/O8dN374+5q06dOvbMM894LDt//rzNnTvX5s6da7dv3zYz+tnsf/149epVe+GFF8zf39+2bNnise7EiRNWvnx5ix8/vvv+AMavRy+9e/e2DBkyWMaMGa1GjRq2evVqMzP75ptvLGHChPbUU09ZvXr1rFSpUpYjRw4zM3vzzTetTJky7r8HmPXs2dNSp05tyZIls5w5c9ry5cvNzOzbb7+1SpUqWYYMGaxcuXKWL18+K1CggJmZvfvuu1aoUCHuI31IzvsyZs2aZVmyZLE5c+bY5MmTLWfOnFa7dm3buHGjmZlt2rTJOnToYC+88IJ17NjRbty4YWZmTZs2tTZt2tjNmzfZJ9md929AQIAFBgZawoQJbdKkSWZ25zijQYMGliFDBsuWLZvlypXL8uXLZ2Z3+j579uzuiXrwz+bMmWPZsmWz+fPn2+zZsy1//vxWtWpVW7VqlZmZ7dixw3r06GEvvviivfbaa+7jwObNm1uLFi0sLCzsiXm/EpJwT6dOnbLkyZNb8eLF3QfxJ06ccAel0aNH33O7J+mGvsdh7NixNmjQINu7d6972dq1a61IkSL2448/mlnkEGVmHBg6LFu2zDZv3my7du2y4OBgS506tW3evNmjzauvvmqJEye2FClS2JUrV56YHXx05ez/lStXWsaMGW3FihU2fvx4Cw4OtqxZs9rKlSvNzOzIkSPWuXNna9OmjXXt2tX999CwYUNr2rTpE/234NzfLl682PLmzWtLliyxvXv3Wo0aNSxTpkzum60PHjxoM2fOtI4dO9o777zjPvBp3769NWjQwK5du+aNXyHGW7VqlfXq1ctjVrCtW7da8eLFrVatWvbTTz9F2ubatWvWo0cPS548ue3bty8qy4221qxZY0WLFrWffvrJzp49az169LCkSZO6T8qeO3fONm7caG+++aZNnjzZvR/o1KmTVa1a1S5fvuzN8mOM5cuXW69eveyTTz5xL9u3b5+VKVPGnn32WVu2bFmkbUJCQqx79+5P5PuVkIT72rJli+XOndueeuqpSEEpadKk9t5773m5wpivTZs2VrlyZUuQIIH169fPlixZYmZmJUuWtK5du3q5uujnwIED7oO78PBwu3jxouXOndsdKPfs2WONGjWyNGnS2NatW93b9ejRw7744gs7f/68V+rGvU2fPt3eeOMNe/fdd93Ltm3bZk2bNrUsWbK4P7CdQej06dPWo0cPS5kypcfJhSfZ1KlTbdiwYTZs2DCP5fXr13cHpbtXL+767bff7PXXX7eAgADbvXt3VJYbK0RERNjhw4ctUaJE5nK57M033/RYv3XrVitRooTVr1/fvvvuO/fyw4cPW8+ePa1gwYK2bdu2qC47Wvr444+tX79+1qtXL4/lb7zxhiVNmtQ+/vhju3jxose6vXv3Wvfu3S1JkiS2c+fOKKw2ZoqIiLATJ05Y0qRJzeVyWe/evT3W79+/38qUKWM1a9b0mO77t99+s969e1uRIkVs+/btUVy19xGScN+rP7dv37YtW7ZY9uzZPYLSyZMn7bXXXrMqVapwRv4h3K+fb968aVOmTLHatWtbxowZrW3btvbqq69aQECAx4H+k27+/Pnmcrls7ty57vdiaGioZcuWzeNs7d69e61x48YWP358e/XVV61x48aWOnVqnisVzRw5csQqVapkCRMmjHSAuW3bNmvWrJlly5bN43kyJ0+etHfeecdy5cr1RH5g30+OHDnM5XJZy5YtI6177rnnLFu2bPbFF1+4TzBcvXrV+vfvb2XKlLEdO3ZEdbkx1r0+71auXGlBQUH27LPPRtpfb9u2zTJlyhTp4H/Xrl126tSp/7TWmOS5554zl8tl1atXt9DQUI91vXv3tpQpU9rw4cM9Hofx4YcfWtWqVQlID2nz5s2WK1cuK1eunHs46F2//PKLZc+e3f0czLv2799vp0+fjsoyow1C0hPOeeA+e/ZsGz58uI0YMcJ9QHm/oHTmzBn3BwZB6Z/9tZ9HjRplw4cPt3379rn79PTp07Zz506rUaOGlSxZ0lwul3344YeRtn+SNWrUyFKkSGHz5s2z69evW2hoqOXJk8cOHjzo0e7333+3t99+28qWLWt169blQDCa+v777+3ZZ5+1wMDASKFn+/btVrNmTWvQoIF7WUREhP3+++88sPr/OfcLlStXtrRp09rq1asjDUF85pln7IUXXvBYdvHiRe7jeAjOvr57/9bdfl6yZIllzpzZWrRoEWlfc+DAAXc79uP317FjR4sXL57NmjUr0lXPjh07WvXq1T2ONe6OJMA/u3btmkVERLiPNdasWWNZs2a1xo0b288//+zR9tixY7xfHQhJTzDnDqdXr16WOXNmK1++vFWvXt1SpUrlHgoQHh7uEZTuThhw92FjeHA9evSwFClSWJUqVSxFihRWuHBhGzx4sMeHQnh4uPs+jNSpUz/xQ8RmzJjhceDRpEkTCwgIsDlz5tiRI0csf/78dvLkyXtue/PmzUgfuIh6f/dh+8MPP1jNmjWtZMmSkQ4wDx486N6WfU3kfvxrGCpWrJjlzJnT1q1bF6mtsx/py4fj7MuRI0fa888/b1WrVrVu3brZ2bNnzezOPWGZM2e25s2b3/PqxpN879y9nDp1yk6cOGFXrlxxL2vSpIklSZLE5s6d677qeZfzpCzv3wf3/vvvW926da18+fLWqVMnO3bsmJmZrV692h2U7k525MT79Q5CEmzs2LGWPn169xmF6dOnm8vlssSJE7uHMYWHh9vPP/9sOXLksPLly3ux2phr/vz5FhgY6B6ScevWLXvttdfsmWeesVGjRllERITHjunMmTNWuHBhmzdvnrdK9rrDhw9b7ty53Tv2u5o0aWKpUqWyCRMmWJYsWaxhw4Y2aNAgGzFihPXr1899DxIfpt7nPMCcOnWqdezY0V5//XX78ssv3csXL15stWrVspIlS97zAJMzmp59MHr0aGvTpo1VqFDBFi5c6DF0q1ixYpYrVy5bv379fYMSHk3v3r0tRYoU9vbbb1vz5s2tZMmSlilTJvv999/N7M6V0axZs1qdOnXs0KFDXq42+howYICVKlXKEidObLVr1/a4l+7uSbB58+ZFOsHF/vzh9OnTx1KkSGEjRoywdu3a2TPPPGNp0qRxj7z46aefLEeOHPbss8/a/v37vVxt9ERIesJdvHjRunTpYtOmTTMzs++++84SJ05s7733njVo0MCSJk3qniksPDzcNmzYYGnSpPGYGQUPZvTo0VaoUCG7evWq+2Dl8uXL9tJLL1mZMmXuuU3OnDlt3LhxUVlmtLFw4UL3WVqzO9OSOsf8N27c2FwulxUqVMiqVatmzZo1s+DgYHv22Wetdu3atmvXLm+Ujfvo1auXBQYGWvPmza158+aWIUMGe//9993rv//+e6tbt65lyZKF+8cc/hpsevfubWnSpLFu3bpZx44dLVmyZPb222979FnJkiWZkOEx279/v+XMmdO+//5797K9e/dapUqVLHfu3O6hX9999509//zzBNL7ePvtty158uQ2e/Zsmz59unXu3NmyZMnicR/MSy+9ZC6Xyz0lNR7eoUOHLHfu3LZo0SL3sgMHDlitWrUsKCjIfY/RypUrrWHDhrxf74OQBNu4caMdOXLE9u7da9myZbMxY8aY2Z3nD7hcLnO5XO77BcLCwqxs2bIez0rC37u78/nkk08sT5489ueff5rZ/6b2PnDggLlcLlu/fr3HdkuXLrV48eI9cVNumt25Pytz5szWqlUr27lzp4WFhVlgYKA1atTI496VNm3aWOLEie3rr7/2XrH4R5MmTbKsWbO6bxT+/PPPLW7cuObn52cDBw50t5s/f7717NmToR738cUXX1iWLFncJwu2bNliLpfLUqdObb1797ajR4+627Zu3Zp+/Bf+etC4adMmS5AggUfwDA8Pt40bN1qBAgVszpw5//gaT7rz589b+fLlbfLkye5lZ8+etdGjR7snF7nr7bff5lmA/8KmTZssfvz4HkPpwsPDbdu2bVaoUCGbMWNGpCtzvF8j8/H2w2wRdW7duuX+/4iICPf/lypVSkFBQdq1a5fSp0+vpk2bSpKSJ0+u9u3b6/3331f+/PklSQcPHtTJkydVrVq1qC0+BnH2rfS/J7LXrFlTx44d05tvvilJihs3riTp2rVryps3r5ImTeqxXfr06XXw4EHlyZPnP685ukmTJo3mzZunvXv3avTo0QoNDdWMGTO0ZcsWffTRR9q+fbsk6bPPPlONGjXUoUMHffnll7px44aXK4f0v7+BiIgI3bx5U8eOHdPLL7+sUqVK6bvvvtOrr76qYcOGqWfPnhoyZIhGjhwpSapfv77effdd+fr6Kjw83Ju/gtc1bdpUo0ePdn9/8+ZN+fj4qEePHipatKi++eYbVa5cWV988YV69+6t9957T1OmTNH+/fslSZMmTaIfH5GZuffbU6ZM0enTp5UjRw5ly5ZNS5Yscb+/fXx8lD9/fl29elXHjh2L9Dp3XwN3xI0bV0eOHNGpU6fcy1KlSqXg4GBlzpxZe/bscS8fMGCA4sSJo9u3b3uj1Bhr+fLlkqQCBQoob968WrJkifvYz8fHR3nz5tWNGzd09OhRuVwuj215v96Dt1Ma/nt/nflr/Pjx1qFDB+vRo4d99dVX7uWjR482l8tlx44ds4sXL1rdunWtY8eO7vV3zzIwI9L9Oc/EbNy40RYsWGC//PKLe/KFr7/+2vz9/a1Vq1a2YsUK27p1q9WsWdPKlCnDWZx72LZtmxUuXNhat25tf/75p61du9YyZsxoLVu29HjGSK1atSxz5sweNwHDO5zv4+PHj5uZ2YULF+zQoUN2/Phxy5Mnj33wwQdmdmeWpQQJEpjL5Xpih5Xey9mzZ23ChAmRHiR9+PBh++OPP+zkyZNWtGhRdz+eP3/eUqZMaX5+fh4PNcXDOXz4sMcEAdu3b7d06dLZpUuX7NatW9ayZUt75plnPK5cX7lyxUqWLGkTJ070VtnR3qVLl8zszuiJ4OBga968eaTJdlq3bm3PP/889x39Cxs2bLCsWbPapk2b7NatW9auXTsrXbq0x/2fV69etVKlSrG/fUCEpFjulVdesYoVK7rvK3rrrbcsYcKE1rx5cytatKjlzZvXmjRpYmZ3pjWtWLGiuVwuy5kzp+XLl8/jQ5qD+L/n3Ln37t3bgoKCLH369Fa4cGHr2LGjeyjMsmXLLCgoyDJmzGg5cuSwcuXKufuZPo7MGZQuXrzoEZScQ+/uN8Mdoo7z/du3b19zuVwe95F9//33lj9/fvcU3lu3brVmzZrZ/PnzGRr2//76PJJx48ZZ586dPZZt377d8uTJY+vWrTOzO0N2O3fubJMmTaIfH1Hnzp09JtYxu/NMmQwZMrjvNzp//rxVr17dSpYsac2aNbOPP/7YKlSoYPnz52do2H0MGTLEXnrpJTt8+LCZmc2bN88CAgKsX79+duTIETO7c+D+9NNPW8+ePb1Zaox37Ngxy5w5s40YMcLMzEJCQqxu3bpWrFgxa9iwob377rtWvnx53q8PgZAUy61bt85y5sxpzz//vC1atMhq1Kjhvhny2rVrNm3aNMubN6+1a9fOzO6c8fnyyy9txowZ7g9b/pgezjvvvGOBgYHufn7llVcsWbJk1qhRI/dVvQsXLti+ffts165d7gNL+vn+7nVFKWvWrNagQQP3bGicgfQuZ0Dq3Lmz+fv7W/LkyT1uHL575WjixIl2+vRpq1mzpjVv3tz9b/ek/w107tzZateubWZ3puC9cuWK9enTx3LkyGH9+vVzt1uxYoWlSJHCxowZY2vWrLHatWtb/fr13esJSg/v2rVrlidPHitatKj7Po6NGzda/vz5zex/783z58/b0KFDrUKFCvbMM89Y06ZN3Se56HdPvXr1snTp0tlnn33mcRJr2rRpljp1aitbtqxVrVrVypYta/ny5Xvi//4fxd19p/Pe50yZMrk/F69evWrvv/++1apVyypWrGgtW7bk/foQCEmx2N0/mp9//tmyZ8/ufkjp3elKze4MFfj444+tcOHC9ssvv0R6Df6IHs6xY8fs2WefdQ9jXLx4sSVOnNiaNWtmefLkscaNG99zaliuIP2zv15RWrlypeXPn9/j/Qzv69atmyVLlsx+/fVXq169usf0vhcuXLDu3btb/PjxLSgoyAoXLuz+wCbkmu3evdvdH5cvXzYzsxMnTtjQoUMtT5481qdPH3fbrl27WvLkyS1LlixWqlQp+vFfuNt3oaGhlitXLitUqJDt3LnTFixYcN+ZR83M41k+HOB7+u677yxt2rQeEwdcvHjRDhw4YGZ3Ziv94IMPrE2bNjZ48GB3/9GPD+evt1Ns377dSpUqZTNmzIjU9u5DkM3o5wdFSIql/nrQvWHDBsuVK5e5XC6bPXu2x7pff/3V/Pz8mCHsMVm6dKmdOXPGNm7caIGBge7p0jt06GCJEye2ypUr22+//eblKmOmbdu2WfHixa1Ro0Z26dIlCw0N9XZJcOjfv78lTJjQPWSpWrVq1r9/fzP738H7hQsXbMuWLbZw4UKuVt/H559/bsmSJXPvJ06ePGmDBw+2PHnyeAxJ+vnnn23nzp1cjf4X/vqw4mvXrlnOnDmtfPnyNnToUEuXLp29/vrr1qtXL/vggw9s+PDh1r59e/dzBZ3b4n+mTJli5cqVM7M7gWjw4MGWPXt2S58+vbVt29Y9y6sTJ2Ufzvfff28ul8tatmzpcS9i9+7dLWvWrPd9EDfv1wfHVBax1N1ZSlasWKGzZ8/qqaee0pdffqkcOXJo8uTJWrNmjbtt4sSJFRQUJF9fX2+VGyPdb9aoSpUqKXXq1Jo3b54qVKigtm3bSpIyZcqkwoULq2TJksqQIUNUlhprFClSRJ988olOnz6t0NBQ+fv7e7skODzzzDPavHmzihYtKknKmzevLly4IEnumZROnTqlYsWKqVatWu7Z1+LEieO1mqMD52yAkpQ5c2YVKFBAVatW1fHjx5U+fXq1atVKL774ohYtWqTevXtLkooXL66CBQvKx8eHfnxEdz8rV65cqf379ytBggTavn27zpw5o/79+ytr1qw6evSo9u7dq02bNmnjxo06deqUChcu7H6Nv84S9iS7O8NounTptGbNGgUHB6tGjRo6cOCA3njjDfXt21fffvutTp48GWlbjkEeXFhYmKpXr65vvvlGLpdLQ4cOValSpTR16lQ1aNBA2bNn1xdffHHPbXm/PgRvpzT8d3766SfLmTOnde3a1T0j3caNGy179uz21FNP2dChQ23OnDlWp04dy5MnD2dxHoLzSt28efNsypQp9vnnn7tn8TG7c+XomWeecfd9gwYNbOLEiZHGEOPhOYcNwDv+7v179z3eu3dv93CliIgIe+aZZyx37tz/uP2TyjkRyYYNG6xSpUqWPXt2jytKQ4cOtRQpUtj48eO9VGXss3nzZkuVKpV1797dPXzp+vXrVrBgQStYsKDt2LHjntvxmelp+vTplidPHvfELLNnz7Y2bdrY559/bn/88YeZ3bmSXKRIkUjPBcSDu3sv+d1+vnz5sp09e9batWtnVatWtUSJEpmfn581a9bMy5XGfISkWK5///5WpkwZ6969u509e9bM7nwg5M6d21wul9WvX99ef/119zANdvp/r0GDBtarVy/39927d7fEiRNb4cKFzc/Pz5555hmbNWuWmd35wChatKgVLVrUihQpYrlz53b3M5e7EZM537+ffPKJ9ezZ015//XW7evWqmf0vAH300UfukFSzZk3Lly+fx30cTzpnUNy0aZO5XC6P6XrXr18fKSgdP37cpk6dyr76Mfvggw8sb9681rNnT/d9M3eH3hUrVsw2bNhAsP8H8+fPt6eeesqefvpp9/HG3RNat27dsqtXr1r16tXt6aefpi//hfnz51upUqXs6aefjvRIljNnzthnn31m5cuXt8SJE9v8+fO9U2QsQUiKJZwHLX/98Bw4cKCVKlXKunfv7v6D2rFjhwUEBNg777xz3+3g6fbt2/b+++9b3LhxbciQIXb27FkrXLiw/fzzzxYaGmpnz561GjVq2DPPPGPLly83M7NJkyZZ//79rVevXgRRxArOg5s+ffpY8uTJrUaNGhYUFGSZMmXymABm+fLlljdvXitVqpRlzZrVfYM898547rM//fRT6969u/n4+Fj8+PFt+vTp7nX3CkrsSx6ds9//ek/jhx9+aLly5bKePXu6J9gJDQ21pEmTWsuWLaO0zpgoIiLCvv/+eytbtqyVLl3afbxx9epVGzlypJUrV86KFSvGIy/+JWc/lylTxt3Pzv48cuSINWrUyPr27eveBg+PkBTLTJkyxQYPHhxp5z9w4EDLmTOnvfHGG+4Hm+7Zs8f9Icsf0IMJCwuz8ePHm4+PjzVu3NgaNmxooaGh7v47c+aMlSlTxqpXr37P7Tk4RGxx6dIla9u2rW3bts0iIiLs5MmT9uyzz1qGDBls3759Zmb2448/msvlskKFChGQ7qN3796WNm1amzJlio0cOdLq1KljiRIlssmTJ7vbrF+/3ipWrGg5cuRwz+bIAea/M3r0aBs8eHCkM/EjR460VKlS2euvv+4OSjdu3CCQ3sfcuXM9jjciIiJs0aJFVrZsWXv66aftwoULZnbnQepvvPEGs9g9ogftZ+eV+vfee8/y5MnDBEf/AiEpFgkPD7fg4GArWrSojRw5MtIfRs2aNS0wMDDSzDLs/B9OWFiYffrppxYQEGDZsmWzkJAQM/vfNLJr1qyxePHi2e7duwmfiJUmTpxoiRMntrJly7ofCGlmdvbsWatatapHUJo1axYHRvdx4sQJK1CggMcQu19//dVee+01S5AggXsa34iICNu4caNVqVLFnn32WfewRjy4v4bKV1991QIDA+3DDz+MFJTatGljadOmtQ4dOnjMRMpnpae1a9da8eLFrV69epGml541a5alSJHCqlev7h56dxf9+HAepJ+rVavm7ue7xx39+vWzYsWKuY9R8PCY3S4GuzsT0l0+Pj6aMmWKihcvrlmzZumTTz5RaGioe32BAgWUJk0aJUqUSAEBAe7lzCjz98zM47/x4sVTkyZNNHLkSJ04cULDhw+XJMWNG1fSnVnvMmbMqAQJEjCLDGKlEiVKqHjx4tq5c6d7lseIiAilSpVKM2bMUP78+VWgQAEdO3ZMjRs3Vpw4cXT79m1mX7uHo0ePeuyns2XLpo4dOypr1qxq0aKFZsyYIZfLpZIlS6phw4YKDQ3VtWvXvFhxzHR3FrtJkybpxIkTGj16tF588UWNGjVK06dP17lz59xtAwMDFRgYqBs3bihjxozu5XxW/s/cuXM1YcIENWvWTOfOndNLL73kntkuTpw4qlGjhjJkyKC1a9eqb9++HtvSjw/uQft5/fr16tevn6Q7xypnz57Vpk2bNGHCBCVOnNibv0LM5uWQhkd096qF2Z1Z7DZv3my7du0yszs3SrZp08ZKlSplI0aMsIsXL1pERIS9+OKLNnv2bGZXewjOPrp48aJdvHjR/X1oaKiNGzfOfH19rWvXrrZ27Vrbs2eP1ahRw5566in6F7HCvd7Ht2/ftt27d1vRokUtf/787lkd7+5bTp8+bV27duWMscO9+vHGjRvWsGFDa9mypZ04ccJjXfPmze3pp5+29OnT2+LFi83szrDpwMBA99AaPLz06dNbvXr13N/36NHDMmfObO+99557ZrtGjRrZkiVL3O9nRgRENnDgQCtbtqzt2rXLZsyYYUWKFLGGDRu6158/f95eeuklW7x4MZ+F/8K/6Wdmgf33XGb/f3ocMcJLL72k559/Xs8995wkqWfPnpo6darix48vPz8/DRo0yH2moXv37tq8ebP+/PNPpUyZUleuXNGePXvk6+uriIgI95k13Juzj95991198803un79ujJmzKgvv/xSCRIk0K1btzRp0iT16NFD169fV7du3XT48GHNmTNHcePGpZ8Roznfv/v27ZOvr6/ix4+vzJkzy8y0f/9+vfjii4qIiNDatWuVJEmSSO/58PDwJ/7MsbNPfvvtN92+fVvZsmWTJE2YMEEjR45U06ZN1apVK2XIkEFXrlxRy5YtVatWLc2fP18ZMmTQuHHjtGzZMqVOnVqFChXy5q8TY9xr/7t+/Xq1bNlSPXr0UIcOHSRJ/fr107fffqurV68qUaJEun37tnbv3q04ceKwD/+LP//8U8mTJ5d05zld6dOn1zfffKOZM2fq/ffflyS1bdtWX331leLHj6/vv//e/RyvJ30/8DAetZ+d71czYzTLv+XdjIaHcfr0aWvYsKElT57cli5daidOnLAcOXLY5s2bbfny5fbGG2+Yy+Wyzz77zMzu3Dszf/58e+utt+ztt99mRqSH4Dxz2LdvX0ubNq2NHTvWfvjhB0uTJo1VqlTJfdbxxo0bNnXqVHO5XDZx4kT3dtx/gZjM+TcwaNAgy5Url2XPnt1SpkzpMa3s3r17rXDhwla4cGGPK62IrE+fPpYlSxZLkyaN1apVy/2ckxEjRli+fPmsdOnS1qJFCytRooQVLVrUzMzatm1r5cqV42rGvzBmzBhbtmyZnTt3zm7fvm2dO3e2Ro0aedxPt2jRIhszZoyNGDGCz8r7GDp0qNWsWdO+++47MzPbv3+/5ciRw8aMGWNmZitXrrQaNWpY8eLFrX79+sxi94jo5+iDkBTDHDlyxNq2bWvJkiWznj17Wp8+fdzrzp8/b/369TOXy2WTJk265/bs9P+ec/piM7MffvjBChQoYD/99JOZmS1evNgSJ05sadKksXz58rlnP7p+/brNnz+fYIRYZ9CgQZYmTRpbsmSJnT592l544QWLHz++ffrpp+42+/bts3Tp0tlLL73kxUqjH+dBy8yZMy1z5sw2a9YsmzVrluXOndsKFSrk3ocsWrTIBg4caLVr17auXbvajRs3zMzsxRdftJdfftljiDUe3K5du8zlclmmTJmsU6dOtnr1ajtx4oSlSZPmbx/Iy2elp9u3b1vDhg3N5XJZokSJrG/fvrZt2zbr27evvfjii+73sZnZuXPn3KGez8SHQz9HL4SkGML5B7B48WLr37+/+fv7W9OmTT3aXbhwwfr162e+vr42duzYqC4zRmvZsmWkZwosW7bMRo4caWZmS5YscT/p/tixY5YqVSqrXLmyexavu9hZIbbYvn27VapUyZYsWWJmZt98840lS5bMatasaT4+PjZhwgR326NHj3JgeR8LFiywTz75xKO//vzzT8uXL58VLFjQfVXa7H/B6uzZs9a3b19LliyZ7d27N8prjqn+esXtxo0b1rx5c8uUKZN9+umnlj59eps0aZL16dPHkiRJYnv27Lnndojsxx9/tObNm9snn3xiFSpUsA4dOlijRo0sS5Ys9sknn0RqT58+Gvo5+iAkxQDOs5EjRoyw7Nmz21dffWUvv/yy+fr62qJFizzaX7hwwTp37mxlypThj+cBhYSE2MaNG91na//44w/3uuPHj9v169etYsWKNmDAADO7c4BTokQJc7lc9uKLL3qlZuBx++twjcOHD9vHH39st2/ftpUrV1q6dOls9OjRZmZWo0YNS5gwoX344Yce2xCUPJ07d84SJEhgLpfL3nrrLTP730HNxYsXLX/+/FasWDHbuXOne5sLFy5Yq1atLE+ePLZ9+3ZvlB3jLV++3LZu3WpmdwJntmzZbNSoUbZz504rUqSIPf/88+Zyuaxp06Z2+fJlL1cbfY0cOdI++OADM7uzf2jVqpW1bt3abt68adOmTbO2bduay+Uyl8tlu3fv9nK1MRf9HD0RkqI55wFH586dzeVymb+/v61bt87Onz9vbdq0sYCAAPfsR3eFhIQwM88Devnll61Xr17u7ydOnGh169a1TZs2uZedPHnSsmfPbgsXLjQzsytXrljz5s1t//79jANGrOB8H999QKyZuWeua9mypbVv3959pbRt27ZWsGBBe/rpp9nHONyrL/bu3Wt58uSxMmXK2KlTpzzaXbx40VKlSmUtW7b02Oa3336zkydP/vcFx0Lbtm2zkiVLWsGCBW3atGlmdme4Y7Nmzez06dN26tQpGzNmjGXJksUqV67M+/c+bt68aUOGDDFfX18LDg62ZcuW2e3bt61o0aL27rvvutt069bNqlatygmSR0Q/R1+EpBiiR48eFhAQYAcPHrRKlSrZ1KlTzczswIED1q5dO0uWLJl7SIwTO/9/tmDBAvcVpOvXr9vixYutQIEC1qJFC/eZyIiICMudO7dVqFDBvvjiC6tYsaKVKlXKfWDJTgsxmTMgDRgwwMqUKeN+wGl4eLiFhoZasWLF3PdA3rp1y5577jlbu3YtJ2McnP1469Ytj6G3u3fvtnTp0ln16tXdDy+922dXrlzx2IfQlw/nXieqNm/ebEOGDDEfHx975ZVXbNSoUfbiiy+6Q1NYWJidO3fOvS19fn979uyx5557zkqWLGmtWrWyL774wl544QX356PZ//qPz8JHRz9HP4SkGODurHU7duwwM7PixYvb4MGD3euPHDliHTp0MJfLZevWrfNWmTHOXz8Up06dajVq1LA///zTVqxYYUWKFLFmzZq5ryjt2LHD8ufPb0WKFLFnn32WGWUQ6/Tu3dtSpEhhy5cvd1/xuKtv374WN25c69ChgxUrVswKFizo/qDmANNzP/D+++9bcHCwFS1a1N577z3bvHmzmd0JSmnTprUaNWrY+fPnzcyz7zjweXjOft+4caN9//33du3aNfeyn376yapUqWL169e35MmTW2BgoO3fv9/jNej3f3bu3DmbN2+eFS9e3OLFi2cpUqTwOA4xYz/wONDP0QuT/8cAVapU0a5du9zPxsiYMaP7icuSFBQUpGeeeUbjxo1TyZIlvVVmjPPX5weEhobq4sWLevXVV1WkSBG999572rt3r0aPHq3t27erUKFC2rFjhxYuXKilS5cqbty4un37Ns/QQKywdetWLViwQN99950qV66shAkT6siRI/r000914sQJDRo0SH369NHvv/+uwoULa8uWLfL19VV4eDjP4pDc+4E+ffpo2LBhyp07t/Lly6c5c+aoe/fu+vHHH5U/f34tX75ce/bsUY0aNXT58mWPvuM5Mg/vbr+//vrrql+/vho1aqSSJUtq+vTpCgkJ0TPPPKOJEyeqfv36Klq0qE6dOqWpU6d6vAb9/s9Spkyp5557Tj///LN69uyp0NBQrVixwqMN+4F/j36OZryd0vDg7p7t6tSpk/uJy7du3bI6depYvXr1mAryMZg6dao9/fTT1rhxY/vzzz9t+fLlVrRoUWvevHmkq3RcQUJM9tf37+bNmy1lypS2fft227Nnj7322muWI0cOS5s2raVJk8ZOnDhhZmahoaHubdjXeNq1a5flypXLfvzxR/eyH3/80YKDg61KlSr266+/mtmdq9L16tVjH/IvOM+m//DDD1akSBH78ccf7ciRI9aoUSMrUqSIjRkzxkJCQszszudnaGioDRkyhPftI3L2+aZNm7iS/B+hn6MPToHHIHfPdiVIkEBnzpyRJNWvX1/79u3TnDlz5HK5ZGaKEyeON8uMkcxMktSiRQu1adNGv//+uzp27KiiRYvqvffe048//hjpbA5XkBCT3X3/Hjx4ULdu3VLWrFlVqlQp1alTR6VLl9bNmzf19ttv67ffflPcuHE1b948SZK/v78ksa+RFBER4fH97du3debMGY9+qVixolq0aKFDhw7p5MmTkqRChQppwYIF8vHxifQaeDB3z6bPnj1bS5cuVe3atVWxYkUFBQXpq6++UqFChfTZZ5/p888/19WrV+Xr6yt/f3/169dPceLE0e3bt738G8Q8d48xJKlkyZJcSf6P0M/RB0d5McjdP5oiRYrIzFSpUiUdOHBA+/fvdw/94o/o0Th3Si1btvQISsWKFdPChQvVu3dvL1cJ/HvOg/IZM2aoYcOGWrx4sVKkSKHRo0frvffe04IFCzRq1CgFBwfr1q1bSp8+vQIDAz1e50nf10RERLiD5rx58/Tbb78pICBAadKk0W+//Sbpf/vs6tWry8/PT2vWrIn0OpxseTh3+zQiIkK3b9/We++9p5EjR2rPnj0e7aZMmaIiRYpo8uTJGjdunMcQdUlP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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# 假设 ds 是已定义的数据集\n", "#print(ds[0])\n", @@ -1501,10 +1044,11 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "对实验1进行评估" + "对实验进行评估" ] }, { @@ -1601,518 +1145,6 @@ "print(result.metrics)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "对实验2进行评估" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 16:28:36] evaluation_manager.py:480 [t:8149425664]: start to inference in batch during evaluation\n", - "[INFO] [06-12 16:28:37] dataset_utils.py:398 [t:6227210240]: start to create evaluation task in model\n", - "[INFO] [06-12 16:28:38] dataset_utils.py:360 [t:6227210240]: start to polling status of evaluation task ame-egabngtjh9em\n", - "[INFO] [06-12 16:28:39] dataset_utils.py:367 [t:6227210240]: current eval_state: Pending\n", - "[INFO] [06-12 16:29:09] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:29:40] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:30:11] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:30:42] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:31:13] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:31:44] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:32:15] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:32:45] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:33:16] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:33:47] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:34:18] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:34:49] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:35:19] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:35:50] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:36:21] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:36:52] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:37:23] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:37:54] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:38:24] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:38:55] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:39:26] dataset_utils.py:367 [t:6227210240]: current eval_state: DoingWithManualBegin\n", - "[INFO] [06-12 16:39:26] dataset_utils.py:385 [t:6227210240]: get result dataset id ds-i276rnc2fs8mw6h9\n", - "[INFO] [06-12 16:39:26] dataset.py:407 [t:6227210240]: no data source was provided, construct\n", - "[INFO] [06-12 16:39:26] dataset.py:281 [t:6227210240]: construct a qianfan data source from existed id: ds-i276rnc2fs8mw6h9, with args: {'is_download_to_local': True}\n", - "[WARNING] [06-12 16:39:27] baidu_qianfan.py:749 [t:6227210240]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [06-12 16:39:28] baidu_qianfan.py:358 [t:6227210240]: no cache was found, download cache\n", - "[INFO] [06-12 16:39:28] baidu_qianfan.py:284 [t:6227210240]: get dataset info succeeded for dataset id ds-i276rnc2fs8mw6h9\n", - "[INFO] [06-12 16:39:28] utils.py:708 [t:6227210240]: start to export dataset\n", - "[INFO] [06-12 16:39:30] utils.py:712 [t:6227210240]: create dataset export task successfully\n", - "[INFO] [06-12 16:39:32] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:39:33] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:39:35] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:39:35] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:39:37] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:39:38] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:39:40] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:39:41] utils.py:722 [t:6227210240]: export succeed\n", - "[INFO] [06-12 16:39:42] utils.py:656 [t:6227210240]: get export records succeeded for dataset id ds-i276rnc2fs8mw6h9\n", - "[INFO] [06-12 16:39:42] utils.py:670 [t:6227210240]: latest dataset with time2024-06-12 16:39:41 for dataset ds-i276rnc2fs8mw6h9\n", - "[INFO] [06-12 16:39:42] utils.py:736 [t:6227210240]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/6c6093c96f0241c087af184cc5729de8/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_iR1cd9DGV1_%E7%BB%93%E6%9E%9C%E9%9B%86_40b332V1_20240612_163929.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-06-12T08%3A39%3A42Z%2F3600%2Fhost%2Fb0b128606ab8c874c5840a22ec4af209f6d3abdaf1be2ba51b82dfcd39b29393\n", - "[INFO] [06-12 16:39:42] baidu_qianfan.py:299 [t:6227210240]: download dataset zip to /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/bin.zip succeeded\n", - "[INFO] [06-12 16:39:42] baidu_qianfan.py:324 [t:6227210240]: unzip dataset to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content successfully\n", - "[INFO] [06-12 16:39:42] baidu_qianfan.py:328 [t:6227210240]: write dataset info to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/info.json successfully\n", - "[INFO] [06-12 16:39:43] utils.py:417 [t:6227210240]: need create cached arrow file for /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content/dataset.jsonl\n", - "[INFO] [06-12 16:39:43] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content/dataset.arrow\n", - "[INFO] [06-12 16:39:43] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 16:39:43] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content/dataset.arrow\n", - "[INFO] [06-12 16:39:43] utils.py:276 [t:6227210240]: has got a memory-mapped table\n", - "[INFO] [06-12 16:39:43] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content_6581bd37-1767-4f1a-92f1-7308e666ea39.arrow\n", - "[INFO] [06-12 16:39:43] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 16:39:43] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-z4h6g8vprx3vu0zt/ds-i276rnc2fs8mw6h9/1/content_6581bd37-1767-4f1a-92f1-7308e666ea39.arrow\n", - "[INFO] [06-12 16:39:43] evaluation_manager.py:504 [t:8149425664]: start to evaluate llm 0\n", - "[INFO] [06-12 16:40:38] evaluation_manager.py:532 [t:8149425664]: start to merge evaluation result dataset\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'am-pmun06axr610_amv-p4dhr31nzjz1_None': {'accuracy平均值': 3.8666666666666667}}\n" - ] - } - ], - "source": [ - "#加载被评估模型,在version_id处填入模型版本ID\n", - "eb_turbo_model = Model(version_id=\"amv-p4dhr31nzjz1\")\n", - "#设置本地评估器\n", - "em = EvaluationManager(local_evaluators=[local_evaluator])\n", - "result = em.eval([eb_turbo_model], ds)\n", - "#打印评估结果\n", - "print(result.metrics)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "对实验3进行评估" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 16:40:40] evaluation_manager.py:480 [t:8149425664]: start to inference in batch during evaluation\n", - "[INFO] [06-12 16:40:41] dataset_utils.py:398 [t:6227210240]: start to create evaluation task in model\n", - "[INFO] [06-12 16:40:43] dataset_utils.py:360 [t:6227210240]: start to polling status of evaluation task ame-5jedi4rw9v4n\n", - "[INFO] [06-12 16:40:43] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:41:14] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:41:45] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:42:15] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:42:46] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:43:17] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:43:47] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:44:18] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:44:49] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:45:20] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:45:50] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:46:21] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:46:52] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:47:23] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:47:53] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:48:24] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:48:55] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:49:26] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:49:57] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:50:28] dataset_utils.py:367 [t:6227210240]: current eval_state: DoingWithManualBegin\n", - "[INFO] [06-12 16:50:28] dataset_utils.py:385 [t:6227210240]: get result dataset id ds-qerytxbmakirxhtg\n", - "[INFO] [06-12 16:50:28] dataset.py:407 [t:6227210240]: no data source was provided, construct\n", - "[INFO] [06-12 16:50:28] dataset.py:281 [t:6227210240]: construct a qianfan data source from existed id: ds-qerytxbmakirxhtg, with args: {'is_download_to_local': True}\n", - "[WARNING] [06-12 16:50:29] baidu_qianfan.py:749 [t:6227210240]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [06-12 16:50:30] baidu_qianfan.py:358 [t:6227210240]: no cache was found, download cache\n", - "[INFO] [06-12 16:50:31] baidu_qianfan.py:284 [t:6227210240]: get dataset info succeeded for dataset id ds-qerytxbmakirxhtg\n", - "[INFO] [06-12 16:50:31] utils.py:708 [t:6227210240]: start to export dataset\n", - "[INFO] [06-12 16:50:32] utils.py:712 [t:6227210240]: create dataset export task successfully\n", - "[INFO] [06-12 16:50:34] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:50:36] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:50:38] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:50:39] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:50:41] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:50:42] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 16:50:44] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 16:50:45] utils.py:722 [t:6227210240]: export succeed\n", - "[INFO] [06-12 16:50:46] utils.py:656 [t:6227210240]: get export records succeeded for dataset id ds-qerytxbmakirxhtg\n", - "[INFO] [06-12 16:50:46] utils.py:670 [t:6227210240]: latest dataset with time2024-06-12 16:50:44 for dataset ds-qerytxbmakirxhtg\n", - "[INFO] [06-12 16:50:46] utils.py:736 [t:6227210240]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/6c6093c96f0241c087af184cc5729de8/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_8Wl8c39JzK_%E7%BB%93%E6%9E%9C%E9%9B%86_ffc010V1_20240612_165032.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-06-12T08%3A50%3A46Z%2F3600%2Fhost%2Ff6bf267633f5389ee0671f70e85c45d9b47571759878ef48c71bb94f7dc37181\n", - "[INFO] [06-12 16:50:47] baidu_qianfan.py:299 [t:6227210240]: download dataset zip to /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/bin.zip succeeded\n", - "[INFO] [06-12 16:50:47] baidu_qianfan.py:324 [t:6227210240]: unzip dataset to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content successfully\n", - "[INFO] [06-12 16:50:47] baidu_qianfan.py:328 [t:6227210240]: write dataset info to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/info.json successfully\n", - "[INFO] [06-12 16:50:48] utils.py:417 [t:6227210240]: need create cached arrow file for /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content/dataset.jsonl\n", - "[INFO] [06-12 16:50:48] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content/dataset.arrow\n", - "[INFO] [06-12 16:50:48] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 16:50:48] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content/dataset.arrow\n", - "[INFO] [06-12 16:50:48] utils.py:276 [t:6227210240]: has got a memory-mapped table\n", - "[INFO] [06-12 16:50:48] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content_6e907d6e-eaec-4dd0-9dab-0cdd7f1d0f61.arrow\n", - "[INFO] [06-12 16:50:48] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 16:50:48] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-2e2bkwtr9qe824fx/ds-qerytxbmakirxhtg/1/content_6e907d6e-eaec-4dd0-9dab-0cdd7f1d0f61.arrow\n", - "[INFO] [06-12 16:50:48] evaluation_manager.py:504 [t:8149425664]: start to evaluate llm 0\n", - "[INFO] [06-12 16:51:46] evaluation_manager.py:532 [t:8149425664]: start to merge evaluation result dataset\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'am-sjvimd0dvir3_amv-snbcpjsuxhiv_None': {'accuracy平均值': 3.8333333333333335}}\n" - ] - } - ], - "source": [ - "#加载被评估模型,在version_id处填入模型版本ID\n", - "eb_turbo_model = Model(version_id=\"amv-snbcpjsuxhiv\")\n", - "#设置本地评估器\n", - "em = EvaluationManager(local_evaluators=[local_evaluator])\n", - "result = em.eval([eb_turbo_model], ds)\n", - "#打印评估结果\n", - "print(result.metrics)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "对实验4进行评估" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 16:51:49] evaluation_manager.py:480 [t:8149425664]: start to inference in batch during evaluation\n", - "[INFO] [06-12 16:51:50] dataset_utils.py:398 [t:6227210240]: start to create evaluation task in model\n", - "[INFO] [06-12 16:51:52] dataset_utils.py:360 [t:6227210240]: start to polling status of evaluation task ame-yp67z4j25cy7\n", - "[INFO] [06-12 16:51:53] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:52:24] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:52:55] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:53:26] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:53:57] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:54:27] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:54:58] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:55:29] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:56:00] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:56:30] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:57:01] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:57:32] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:58:02] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:58:33] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:59:04] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 16:59:34] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:00:05] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:00:36] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:01:06] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:01:37] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:02:08] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:02:39] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:03:10] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:03:40] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:04:11] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:04:42] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:05:12] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:05:43] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:06:14] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:06:44] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:07:15] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:07:46] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:08:17] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:08:48] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:09:19] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:09:50] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:10:20] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:10:51] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:11:22] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:11:53] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:12:23] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:12:54] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:13:25] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:13:55] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:14:26] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:14:57] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:15:27] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:15:58] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:16:29] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:17:00] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:17:31] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:18:01] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:18:32] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:19:03] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:19:34] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:20:05] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:20:36] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:21:07] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:21:37] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:22:09] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:22:39] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:23:10] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:23:41] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:24:11] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:24:42] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:25:13] dataset_utils.py:367 [t:6227210240]: current eval_state: DoingWithManualBegin\n", - "[INFO] [06-12 17:25:13] dataset_utils.py:385 [t:6227210240]: get result dataset id ds-s61nhe7ahd63an2c\n", - "[INFO] [06-12 17:25:13] dataset.py:407 [t:6227210240]: no data source was provided, construct\n", - "[INFO] [06-12 17:25:13] dataset.py:281 [t:6227210240]: construct a qianfan data source from existed id: ds-s61nhe7ahd63an2c, with args: {'is_download_to_local': True}\n", - "[WARNING] [06-12 17:25:14] baidu_qianfan.py:749 [t:6227210240]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [06-12 17:25:14] baidu_qianfan.py:358 [t:6227210240]: no cache was found, download cache\n", - "[INFO] [06-12 17:25:15] baidu_qianfan.py:284 [t:6227210240]: get dataset info succeeded for dataset id ds-s61nhe7ahd63an2c\n", - "[INFO] [06-12 17:25:15] utils.py:708 [t:6227210240]: start to export dataset\n", - "[INFO] [06-12 17:25:16] utils.py:712 [t:6227210240]: create dataset export task successfully\n", - "[INFO] [06-12 17:25:18] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:25:19] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:25:21] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:25:22] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:25:24] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:25:25] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:25:27] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:25:28] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:25:30] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:25:31] utils.py:722 [t:6227210240]: export succeed\n", - "[INFO] [06-12 17:25:31] utils.py:656 [t:6227210240]: get export records succeeded for dataset id ds-s61nhe7ahd63an2c\n", - "[INFO] [06-12 17:25:31] utils.py:670 [t:6227210240]: latest dataset with time2024-06-12 17:25:29 for dataset ds-s61nhe7ahd63an2c\n", - "[INFO] [06-12 17:25:31] utils.py:736 [t:6227210240]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/6c6093c96f0241c087af184cc5729de8/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_m0vTosMdRz_%E7%BB%93%E6%9E%9C%E9%9B%86_ef6445V1_20240612_172516.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-06-12T09%3A25%3A32Z%2F3600%2Fhost%2F1c9cc28982f3b64857c3f2b7dd07c466b95730b36b835ae0bbbec5043ff8f509\n", - "[INFO] [06-12 17:25:32] baidu_qianfan.py:299 [t:6227210240]: download dataset zip to /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/bin.zip succeeded\n", - "[INFO] [06-12 17:25:32] baidu_qianfan.py:324 [t:6227210240]: unzip dataset to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content successfully\n", - "[INFO] [06-12 17:25:32] baidu_qianfan.py:328 [t:6227210240]: write dataset info to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/info.json successfully\n", - "[INFO] [06-12 17:25:32] utils.py:417 [t:6227210240]: need create cached arrow file for /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content/dataset.jsonl\n", - "[INFO] [06-12 17:25:32] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content/dataset.arrow\n", - "[INFO] [06-12 17:25:32] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:25:32] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content/dataset.arrow\n", - "[INFO] [06-12 17:25:32] utils.py:276 [t:6227210240]: has got a memory-mapped table\n", - "[INFO] [06-12 17:25:32] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content_3f33e68e-bf4b-4226-bc34-efb81d84db6b.arrow\n", - "[INFO] [06-12 17:25:32] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:25:32] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-dnxcse9hebs78nc6/ds-s61nhe7ahd63an2c/1/content_3f33e68e-bf4b-4226-bc34-efb81d84db6b.arrow\n", - "[INFO] [06-12 17:25:32] evaluation_manager.py:504 [t:8149425664]: start to evaluate llm 0\n", - "[INFO] [06-12 17:26:30] evaluation_manager.py:532 [t:8149425664]: start to merge evaluation result dataset\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'am-xz8vwh78x5e9_amv-ekzw2fhefvm4_None': {'accuracy平均值': 3.9}}\n" - ] - } - ], - "source": [ - "#加载被评估模型,在version_id处填入模型版本ID\n", - "eb_turbo_model = Model(version_id=\"amv-ekzw2fhefvm4\")\n", - "#设置本地评估器\n", - "em = EvaluationManager(local_evaluators=[local_evaluator])\n", - "result = em.eval([eb_turbo_model], ds)\n", - "#打印评估结果\n", - "print(result.metrics)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "对实验5进行评估" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 17:30:47] evaluation_manager.py:480 [t:8149425664]: start to inference in batch during evaluation\n", - "[INFO] [06-12 17:30:48] dataset_utils.py:398 [t:6227210240]: start to create evaluation task in model\n", - "[INFO] [06-12 17:30:49] dataset_utils.py:360 [t:6227210240]: start to polling status of evaluation task ame-mi5jaa8ccczi\n", - "[INFO] [06-12 17:30:50] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:31:21] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:31:52] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:32:22] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:32:53] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:33:24] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:33:54] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:34:25] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:34:56] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:35:26] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:35:57] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:36:28] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:36:59] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:37:29] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:38:00] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:38:31] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:39:02] dataset_utils.py:367 [t:6227210240]: current eval_state: DoingWithManualBegin\n", - "[INFO] [06-12 17:39:02] dataset_utils.py:385 [t:6227210240]: get result dataset id ds-7s8guncznr9jfgyd\n", - "[INFO] [06-12 17:39:02] dataset.py:407 [t:6227210240]: no data source was provided, construct\n", - "[INFO] [06-12 17:39:02] dataset.py:281 [t:6227210240]: construct a qianfan data source from existed id: ds-7s8guncznr9jfgyd, with args: {'is_download_to_local': True}\n", - "[WARNING] [06-12 17:39:02] baidu_qianfan.py:749 [t:6227210240]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [06-12 17:39:03] baidu_qianfan.py:358 [t:6227210240]: no cache was found, download cache\n", - "[INFO] [06-12 17:39:04] baidu_qianfan.py:284 [t:6227210240]: get dataset info succeeded for dataset id ds-7s8guncznr9jfgyd\n", - "[INFO] [06-12 17:39:04] utils.py:708 [t:6227210240]: start to export dataset\n", - "[INFO] [06-12 17:39:05] utils.py:712 [t:6227210240]: create dataset export task successfully\n", - "[INFO] [06-12 17:39:07] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:39:08] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:39:10] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:39:11] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:39:13] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:39:14] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:39:16] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:39:17] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:39:19] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:39:20] utils.py:722 [t:6227210240]: export succeed\n", - "[INFO] [06-12 17:39:21] utils.py:656 [t:6227210240]: get export records succeeded for dataset id ds-7s8guncznr9jfgyd\n", - "[INFO] [06-12 17:39:21] utils.py:670 [t:6227210240]: latest dataset with time2024-06-12 17:39:18 for dataset ds-7s8guncznr9jfgyd\n", - "[INFO] [06-12 17:39:21] utils.py:736 [t:6227210240]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/6c6093c96f0241c087af184cc5729de8/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_hJHqEw0Pbn_%E7%BB%93%E6%9E%9C%E9%9B%86_b17511V1_20240612_173905.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-06-12T09%3A39%3A21Z%2F3600%2Fhost%2Fd531636829c1067d678a2ba321e5d7b16d7729478faf67ec6865478810d2aa1a\n", - "[INFO] [06-12 17:39:21] baidu_qianfan.py:299 [t:6227210240]: download dataset zip to /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/bin.zip succeeded\n", - "[INFO] [06-12 17:39:21] baidu_qianfan.py:324 [t:6227210240]: unzip dataset to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content successfully\n", - "[INFO] [06-12 17:39:21] baidu_qianfan.py:328 [t:6227210240]: write dataset info to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/info.json successfully\n", - "[INFO] [06-12 17:39:22] utils.py:417 [t:6227210240]: need create cached arrow file for /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content/dataset.jsonl\n", - "[INFO] [06-12 17:39:22] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content/dataset.arrow\n", - "[INFO] [06-12 17:39:22] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:39:22] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content/dataset.arrow\n", - "[INFO] [06-12 17:39:22] utils.py:276 [t:6227210240]: has got a memory-mapped table\n", - "[INFO] [06-12 17:39:22] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content_a5b88699-018f-452a-8f82-c21f2567f551.arrow\n", - "[INFO] [06-12 17:39:22] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:39:22] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-ixixs2y72e792xkg/ds-7s8guncznr9jfgyd/1/content_a5b88699-018f-452a-8f82-c21f2567f551.arrow\n", - "[INFO] [06-12 17:39:22] evaluation_manager.py:504 [t:8149425664]: start to evaluate llm 0\n", - "[INFO] [06-12 17:40:22] evaluation_manager.py:532 [t:8149425664]: start to merge evaluation result dataset\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'am-1ci0atbugctf_amv-3zpjau8fdbu5_None': {'accuracy平均值': 3.6666666666666665}}\n" - ] - } - ], - "source": [ - "#加载被评估模型,在version_id处填入模型版本ID\n", - "eb_turbo_model = Model(version_id=\"amv-3zpjau8fdbu5\")\n", - "#设置本地评估器\n", - "em = EvaluationManager(local_evaluators=[local_evaluator])\n", - "result = em.eval([eb_turbo_model], ds)\n", - "#打印评估结果\n", - "print(result.metrics)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "对实验6进行评估" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [06-12 17:40:41] evaluation_manager.py:480 [t:8149425664]: start to inference in batch during evaluation\n", - "[INFO] [06-12 17:40:42] dataset_utils.py:398 [t:6227210240]: start to create evaluation task in model\n", - "[INFO] [06-12 17:40:43] dataset_utils.py:360 [t:6227210240]: start to polling status of evaluation task ame-3jyffxh5vm3w\n", - "[INFO] [06-12 17:40:44] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:41:15] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:41:45] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:42:16] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:42:47] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:43:17] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:43:48] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:44:18] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:44:49] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:45:20] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:45:51] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:46:21] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:46:52] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:47:23] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:47:53] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:48:24] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:48:55] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:49:25] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:49:56] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:50:27] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:50:58] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:51:28] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:51:59] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:52:30] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:53:01] dataset_utils.py:367 [t:6227210240]: current eval_state: Doing\n", - "[INFO] [06-12 17:53:32] dataset_utils.py:367 [t:6227210240]: current eval_state: DoingWithManualBegin\n", - "[INFO] [06-12 17:53:32] dataset_utils.py:385 [t:6227210240]: get result dataset id ds-78uwxagmpms518a3\n", - "[INFO] [06-12 17:53:32] dataset.py:407 [t:6227210240]: no data source was provided, construct\n", - "[INFO] [06-12 17:53:32] dataset.py:281 [t:6227210240]: construct a qianfan data source from existed id: ds-78uwxagmpms518a3, with args: {'is_download_to_local': True}\n", - "[WARNING] [06-12 17:53:32] baidu_qianfan.py:749 [t:6227210240]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [06-12 17:53:33] baidu_qianfan.py:358 [t:6227210240]: no cache was found, download cache\n", - "[INFO] [06-12 17:53:34] baidu_qianfan.py:284 [t:6227210240]: get dataset info succeeded for dataset id ds-78uwxagmpms518a3\n", - "[INFO] [06-12 17:53:34] utils.py:708 [t:6227210240]: start to export dataset\n", - "[INFO] [06-12 17:53:35] utils.py:712 [t:6227210240]: create dataset export task successfully\n", - "[INFO] [06-12 17:53:37] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:53:38] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:53:40] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:53:41] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:53:43] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:53:44] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:53:46] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:53:46] utils.py:725 [t:6227210240]: export status: 1, keep polling\n", - "[INFO] [06-12 17:53:48] utils.py:717 [t:6227210240]: polling export task status\n", - "[INFO] [06-12 17:53:49] utils.py:722 [t:6227210240]: export succeed\n", - "[INFO] [06-12 17:53:50] utils.py:656 [t:6227210240]: get export records succeeded for dataset id ds-78uwxagmpms518a3\n", - "[INFO] [06-12 17:53:50] utils.py:670 [t:6227210240]: latest dataset with time2024-06-12 17:53:48 for dataset ds-78uwxagmpms518a3\n", - "[INFO] [06-12 17:53:50] utils.py:736 [t:6227210240]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/6c6093c96f0241c087af184cc5729de8/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_KF53ID2yQm_%E7%BB%93%E6%9E%9C%E9%9B%86_c8a0cdV1_20240612_175335.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-06-12T09%3A53%3A50Z%2F3600%2Fhost%2F30b229e6f1c2b8024ed4d4bb8c7ca54691adbf18eec469786107b6d0dc5c0830\n", - "[INFO] [06-12 17:53:50] baidu_qianfan.py:299 [t:6227210240]: download dataset zip to /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/bin.zip succeeded\n", - "[INFO] [06-12 17:53:50] baidu_qianfan.py:324 [t:6227210240]: unzip dataset to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content successfully\n", - "[INFO] [06-12 17:53:50] baidu_qianfan.py:328 [t:6227210240]: write dataset info to path /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/info.json successfully\n", - "[INFO] [06-12 17:53:51] utils.py:417 [t:6227210240]: need create cached arrow file for /Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content/dataset.jsonl\n", - "[INFO] [06-12 17:53:51] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content/dataset.arrow\n", - "[INFO] [06-12 17:53:51] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:53:51] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content/dataset.arrow\n", - "[INFO] [06-12 17:53:51] utils.py:276 [t:6227210240]: has got a memory-mapped table\n", - "[INFO] [06-12 17:53:51] utils.py:462 [t:6227210240]: start to write arrow table to /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content_1dafdf26-2644-4e09-9bb5-c5ed9f7d00a0.arrow\n", - "[INFO] [06-12 17:53:51] utils.py:478 [t:6227210240]: writing succeeded\n", - "[INFO] [06-12 17:53:51] utils.py:348 [t:6227210240]: start to get memory_map from /Users/jianruitian/.qianfan_cache/dataset/.mapper_cache/Users/jianruitian/.qianfan_cache/dataset/.qianfan_download_cache/dg-7gbruytvdk38j0im/ds-78uwxagmpms518a3/1/content_1dafdf26-2644-4e09-9bb5-c5ed9f7d00a0.arrow\n", - "[INFO] [06-12 17:53:51] evaluation_manager.py:504 [t:8149425664]: start to evaluate llm 0\n", - "[INFO] [06-12 17:54:44] evaluation_manager.py:532 [t:8149425664]: start to merge evaluation result dataset\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'am-1dj1f7vin2nn_amv-psjfucgag950_None': {'accuracy平均值': 3.8333333333333335}}\n" - ] - } - ], - "source": [ - "#加载被评估模型,在version_id处填入模型版本ID\n", - "eb_turbo_model = Model(version_id=\"amv-psjfucgag950\")\n", - "#设置本地评估器\n", - "em = EvaluationManager(local_evaluators=[local_evaluator])\n", - "result = em.eval([eb_turbo_model], ds)\n", - "#打印评估结果\n", - "print(result.metrics)" - ] - }, { "cell_type": "markdown", "metadata": {}, diff --git a/cookbook/batch_prediction.ipynb b/cookbook/batch_prediction.ipynb index 062f0847..063b0341 100644 --- a/cookbook/batch_prediction.ipynb +++ b/cookbook/batch_prediction.ipynb @@ -661,7 +661,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -675,11 +675,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.8" }, "vscode": { "interpreter": { - "hash": "f553a591cb5da27fa30e85168a93942a1a24c8d6748197473adb125e5473a5db" + "hash": "58f7cb64c3a06383b7f18d2a11305edccbad427293a2b4afa7abe8bfc810d4bb" } } }, diff --git a/cookbook/eb_search.ipynb b/cookbook/eb_search.ipynb index ec5a7f4f..64313101 100644 --- a/cookbook/eb_search.ipynb +++ b/cookbook/eb_search.ipynb @@ -1,16 +1,17 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "# ERNIE Bot 搜索能力\n", + "# ERNIE-3.5/4.0 搜索能力\n", "\n", "搜索能力在大模型中扮演着关键的角色,它能够借助搜索引擎,让模型可以获得实时信息,从而更全面地理解问题,做出更准确的预测和决策。\n", "\n", - "现在,ERNIE Bot 和 ERNIE Bot 4.0 都已经支持了搜索能力,这一功能默认开启,无需额外设置模型即可返回更为准确的结果。\n", + "现在,ERNIE-3.5-8K 和 ERNIE-4.0-8K 都已经支持了搜索能力,这一功能默认开启,无需额外设置模型即可返回更为准确的结果。\n", "\n", - "注意:需要 SDK 版本 >= 0.1.4" + "注意:需要 SDK 版本 >= 0.4.2" ] }, { @@ -49,7 +50,7 @@ "def print_md(text):\n", " display(Markdown(text))\n", "\n", - "r = qianfan.ChatCompletion(model=\"ERNIE-Bot-4\").do(messages=[{\n", + "r = qianfan.ChatCompletion(model=\"ERNIE-4.0-8K\").do(messages=[{\n", " \"role\":\"user\",\n", " \"content\": \"林俊杰2023演唱会安排\"\n", "}])" @@ -119,7 +120,7 @@ } ], "source": [ - "r = qianfan.ChatCompletion(model=\"ERNIE-Bot-4\").do(messages=[{\n", + "r = qianfan.ChatCompletion(model=\"ERNIE-4.0-8K\").do(messages=[{\n", " \"role\":\"user\",\n", " \"content\": \"新能源汽车的优势\"\n", "}], enable_citation=True)" @@ -229,7 +230,7 @@ } ], "source": [ - "r = qianfan.ChatCompletion(model=\"ERNIE-Bot-4\").do(messages=[{\n", + "r = qianfan.ChatCompletion(model=\"ERNIE-4.0-8K\").do(messages=[{\n", " \"role\":\"user\",\n", " \"content\": \"林俊杰2023演唱会安排\"\n", "}], disable_search=True)\n", @@ -249,15 +250,16 @@ "source": [] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## ERNIE-Bot-turbo开启搜索:" + "## ERNIE-Speed开启搜索:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2024-02-23T09:04:27.446671Z", @@ -269,13 +271,24 @@ "name": "stderr", "output_type": "stream", "text": [ - "[INFO] [03-01 19:03:01] openapi_requestor.py:316 [t:8423316288]: requesting llm api endpoint: /chat/eb-instant\n" + "[INFO][2024-07-24 14:17:58.087] oauth.py:228 [t:8344509248]: trying to refresh access_token for ak `rRlk1M***`\n", + "[INFO][2024-07-24 14:17:58.328] oauth.py:243 [t:8344509248]: sucessfully refresh access_token\n" ] }, { "data": { "text/markdown": [ - "**2024年的法定假日列表包括元旦、春节、清明节、劳动节、端午节和中秋节**。具体来说,元旦节是在1月1日放假,与周末连休;春节是从2月10日至17日放假调休,共8天,2月4日和2月18日上班;清明节是从4月4日至6日放假调休,共3天,4月7日上班;劳动节是从5月1日至5日放假调休,共5天,4月28日和5月11日上班;端午节是从6月10日放假,与周末连休;中秋节是从9月15日至17日放假调休,共3天,9月14日上班。以上信息仅供参考,实际放假时间可能会根据具体情况有所调整^[1]^。" + "**2024年的法定假日列表包括元旦、春节、清明节、劳动节、端午节、中秋节和国庆节**。具体放假日期如下:\n", + "\n", + "1. 元旦:1月1日放假,与周末连休^[1]^。\n", + "2. 春节:2月10日至17日放假调休,共8天。2月4日(星期日)、2月18日(星期日)上班。鼓励各单位结合带薪年休假等制度落实,安排职工在除夕(2月9日)休息^[1]^。\n", + "3. 清明节:4月4日至6日放假调休,共3天。4月7日(星期日)上班^[1]^。\n", + "4. 劳动节:5月1日至5日放假调休,共5天。4月28日(星期日)、5月11日(星期六)上班^[1]^。\n", + "5. 端午节:6月10日放假,与周末连休^[1]^。\n", + "6. 中秋节:9月15日至17日放假调休,共3天。9月14日(星期六)上班^[1]^。\n", + "7. 国庆节:10月1日至7日放假调休,共7天。9月29日(星期日)、10月12日(星期六)上班^[1]^。\n", + "\n", + "以上信息仅供参考,如有需要,建议您查阅相关网站。" ], "text/plain": [ "" @@ -288,7 +301,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tools_info: {'name': 'baidu_search', 'rewrite_query': '2024法定假日列表?', 'baidu_search': [{'index': 1, 'url': 'http://m.gy.bendibao.com/news/68899.shtm', 'title': '2024年法定节假日放假时间完整表(全年)- 贵阳本地宝'}]}\n" + "tools_info: {'name': 'baidu_search', 'rewrite_query': '2024法定假日列表?', 'baidu_search': [{'index': 1, 'url': 'https://www.gov.cn/zhengce/zhengceku/202310/content_6911528.htm', 'title': '国务院办公厅关于2024年部分节假日安排的通知_国务院文件_中国政府'}]}\n" ] } ], @@ -297,7 +310,7 @@ "from IPython.display import Markdown, display\n", "from qianfan import ChatCompletion\n", "\n", - "chat_comp = ChatCompletion()\n", + "chat_comp = ChatCompletion(model='ERNIE-Speed-8K')\n", "tools = [\n", " {\n", " \"type\": \"tool\",\n", @@ -342,7 +355,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" }, "vscode": { "interpreter": { diff --git a/cookbook/essay_correction.ipynb b/cookbook/essay_correction.ipynb index 73cb62c3..2da98030 100644 --- a/cookbook/essay_correction.ipynb +++ b/cookbook/essay_correction.ipynb @@ -128,29 +128,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [04-02 13:21:20] openapi_requestor.py:336 [t:8094817088]: requesting llm api endpoint: /chat/ernie_speed\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "```json\n", - "{\"详细解析\": {\"内容项\": {\"解析\": \"本文准确地捕捉了话题的核心,方圆之间的智慧在人生中的应用。文章通过日常生活中的例子,展示了方与圆的辩证关系及其在人生中的重要性。文中分别解释了方代表规矩、原则和稳定,而圆则代表变通、灵活和包容。作者提出的观点条理清晰,中心明确,内容充实且符合题意。\", \"等级\": \"一等\",\"得分\": \"18分\"}, \"表达项\": {\"解析\": \"文章采用了议论文的结构,逻辑清晰,语言通顺,字迹工整。作者在阐述观点时使用了生活中的例子,使观点更加生动且易于理解。此外,文章还使用了古诗来增强论证的说服力。符合文体要求。\", \"等级\": \"一等\",\"得分\": \"17分\"}, \"发展等级\": {\"解析\": \"文章不仅满足于阐述基本的观点,还深入探讨了方圆之间的人生智慧的重要性,并举例进行论证。体现出作者对这个话题有较深刻的理解,文章有一定的文采和创意。\", \"等级\": \"一等\",\"得分\": \"17分\"}, \"扣分项和残篇评定\": {\"解析\": \"文章中没有出现错别字或明显的标点符号错误。字数达到要求,没有扣字数分。\", \"扣分\": \"0分\"}}, \"缺点和改进意见\": {\"缺点\": \"无明显的缺点。文章整体结构清晰,论证充分,表达流畅。\", \"改进意见\": \"无需改进。\"}, \"最终得分\": \"52分\"}\n", - "```\n", - "\n", - "\n", - "{\"详细解析\": {\"内容项\": {\"解析\": \"本文准确地捕捉了话题的核心,方圆之间的智慧在人生中的应用。文章通过日常生活中的例子,展示了方与圆的辩证关系及其在人生中的重要性。文中分别解释了方代表规矩、原则和稳定,而圆则代表变通、灵活和包容。作者提出的观点条理清晰,中心明确,内容充实且符合题意。\", \"等级\": \"一等\",\"得分\": \"18分\"}, \"表达项\": {\"解析\": \"文章采用了议论文的结构,逻辑清晰,语言通顺,字迹工整。作者在阐述观点时使用了生活中的例子,使观点更加生动且易于理解。此外,文章还使用了古诗来增强论证的说服力。符合文体要求。\", \"等级\": \"一等\",\"得分\": \"17分\"}, \"发展等级\": {\"解析\": \"文章不仅满足于阐述基本的观点,还深入探讨了方圆之间的人生智慧的重要性,并举例进行论证。体现出作者对这个话题有较深刻的理解,文章有一定的文采和创意。\", \"等级\": \"一等\",\"得分\": \"17分\"}, \"扣分项和残篇评定\": {\"解析\": \"文章中没有出现错别字或明显的标点符号错误。字数达到要求,没有扣字数分。\", \"扣分\": \"0分\"}}, \"缺点和改进意见\": {\"缺点\": \"无明显的缺点。文章整体结构清晰,论证充分,表达流畅。\", \"改进意见\": \"无需改进。\"}, \"最终得分\": \"52分\"}\n" - ] - } - ], + "outputs": [], "source": [ "import re\n", "\n", @@ -268,200 +248,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [04-01 15:47:38] persist.py:58 [t:8094817088]: save to /Users/pengyiyang/.qianfan_cache/file_tmp/pipeline/MBk3b4TFhR\n", - "[INFO] [04-01 15:47:39] persist.py:58 [t:8094817088]: save to /Users/pengyiyang/.qianfan_cache/file_tmp/pipeline/MBk3b4TFhR\n", - "[INFO] [04-01 15:47:41] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 1% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:48:12] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 1% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:48:42] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 3% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:49:13] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:49:44] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:50:14] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:50:45] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:51:16] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:51:46] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:52:17] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:52:47] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:53:18] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 34% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:53:48] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 35% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:54:19] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 36% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:54:49] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 36% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:55:20] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 37% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:55:50] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 38% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:56:21] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 39% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:56:51] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 39% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:57:22] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 40% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:57:52] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 41% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:58:23] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 42% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:58:54] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 42% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:59:25] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 43% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 15:59:55] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 44% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:00:26] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 45% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:00:57] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 45% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:01:27] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 45% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:01:58] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 46% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:02:28] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 47% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:02:59] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 48% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:03:29] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 49% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:04:00] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 50% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:04:00] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:04:30] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 50% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:04:30] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:05:01] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 51% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:05:01] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:05:32] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 51% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:05:32] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:06:02] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 52% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:06:02] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:06:33] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 53% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:06:33] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:07:04] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 54% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:07:04] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:07:34] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 55% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:07:34] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:08:05] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 55% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:08:05] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:08:35] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 56% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:08:35] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:09:05] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 57% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:09:05] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:09:36] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 57% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:09:36] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:10:06] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 58% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:10:06] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:10:37] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 59% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:10:37] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:11:07] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 60% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:11:07] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:11:38] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 60% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:11:38] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:12:08] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 61% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:12:08] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:12:39] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 62% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:12:39] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:13:12] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 62% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:13:12] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:13:43] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 63% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:13:43] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:14:13] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 64% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:14:13] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:14:53] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:14:53] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:15:23] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:15:23] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:15:54] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:15:54] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:16:26] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:16:26] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:16:56] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:16:56] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:17:27] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:17:27] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:17:57] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:17:57] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:18:28] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:18:28] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:18:58] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:18:58] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:19:29] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:19:29] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:19:59] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:19:59] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:20:30] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:20:30] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:21:00] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:21:00] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:21:31] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:21:31] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:22:01] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:22:01] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:22:32] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:22:32] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:23:02] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:23:02] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:23:33] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:23:33] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:24:03] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:24:03] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:24:34] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:24:34] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:25:05] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:25:05] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:25:35] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:25:35] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:26:06] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:26:06] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:26:36] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:26:36] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:27:07] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:27:07] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:27:37] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:27:37] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:28:08] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:28:08] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:28:38] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:28:38] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:29:09] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:29:09] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:29:39] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:29:39] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:30:10] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:30:10] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:30:40] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:30:40] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:31:11] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:31:11] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:31:41] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:31:41] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:32:12] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:32:12] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:32:42] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:32:42] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:33:13] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:33:13] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:33:44] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:33:44] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:34:14] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:34:14] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:34:45] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:34:45] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:35:15] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:35:15] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:35:46] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:35:46] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:36:16] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:36:16] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:36:47] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:36:47] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:37:17] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:37:17] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:37:49] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 65% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:37:49] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:38:19] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 99% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:38:19] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:38:50] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 99% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:38:50] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:39:20] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 99% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:39:20] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:39:51] actions.py:610 [t:8094817088]: [train_action] training ... job_name:model0f228692_WrIcR current status: Running, 99% check train task log in https://console.bce.baidu.com/qianfan/train/sft/job-6x3k3686vifc/task-3gucnjbzvhj9/detail/traininglog\n", - "[INFO] [04-01 16:39:51] actions.py:617 [t:8094817088]: check vdl report in https://console.bce.baidu.com/qianfan/visualdl/index?displayToken=eyJydW5JZCI6InJ1bi1qZThqZTc0aThkZGk2dWZ6In0=\n", - "[INFO] [04-01 16:40:21] actions.py:587 [t:8094817088]: [train_action] training task metrics: {'BLEU-4': '47.73%', 'ROUGE-1': '50.95%', 'ROUGE-2': '29.01%', 'ROUGE-L': '54.53%'}\n", - "[INFO] [04-01 16:40:21] actions.py:626 [t:8094817088]: [train_action] training job has ended: job-6x3k3686vifc/task-3gucnjbzvhj9 with status: Done\n", - "[INFO] [04-01 16:40:21] persist.py:58 [t:8094817088]: save to /Users/pengyiyang/.qianfan_cache/file_tmp/pipeline/MBk3b4TFhR\n", - "[INFO] [04-01 16:40:21] model.py:217 [t:8094817088]: check train job: task-3gucnjbzvhj9/job-6x3k3686vifc status before publishing model\n", - "[INFO] [04-01 16:40:21] model.py:230 [t:8094817088]: model publishing keep polling, current status Done\n", - "[INFO] [04-01 16:40:22] model.py:262 [t:8094817088]: publishing train task: job-6x3k3686vifc/task-3gucnjbzvhj9 to model: am-1g5pi9k6cktk/amv-h7ej2bbxpqrn\n", - "[INFO] [04-01 16:40:53] model.py:287 [t:8094817088]: model am-1g5pi9k6cktk/amv-h7ej2bbxpqrn published successfully\n", - "[INFO] [04-01 16:40:53] model.py:267 [t:8094817088]: publish successfully to model: am-1g5pi9k6cktk/amv-h7ej2bbxpqrn\n" - ] - } - ], + "outputs": [], "source": [ "from qianfan.trainer import LLMFinetune\n", "\n", @@ -742,69 +531,9 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO] [04-03 16:10:01] evaluation_manager.py:430 [t:8094817088]: start to inference in batch during evaluation\n", - "[INFO] [04-03 16:10:02] dataset_utils.py:332 [t:6310473728]: start to create evaluation task in model\n", - "[INFO] [04-03 16:10:02] dataset_utils.py:294 [t:6310473728]: start to polling status of evaluation task ame-rad6m0c62sza\n", - "[INFO] [04-03 16:10:03] dataset_utils.py:301 [t:6310473728]: current eval_state: Pending\n", - "[INFO] [04-03 16:10:33] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:11:03] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:11:34] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:12:04] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:12:34] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:13:04] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:13:35] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:14:05] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:14:35] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:15:06] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:15:36] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:16:06] dataset_utils.py:301 [t:6310473728]: current eval_state: Doing\n", - "[INFO] [04-03 16:16:36] dataset_utils.py:301 [t:6310473728]: current eval_state: DoingWithManualBegin\n", - "[INFO] [04-03 16:16:36] dataset_utils.py:319 [t:6310473728]: get result dataset id ds-ragnuw6t3fazaict\n", - "[INFO] [04-03 16:16:36] dataset.py:389 [t:6310473728]: no data source was provided, construct\n", - "[INFO] [04-03 16:16:36] dataset.py:263 [t:6310473728]: construct a qianfan data source from existed id: ds-ragnuw6t3fazaict, with args: {'is_download_to_local': True}\n", - "[WARNING] [04-03 16:16:37] baidu_qianfan.py:740 [t:6310473728]: parameter \"is_download_to_local\" has been set as deprecated\n", - "[INFO] [04-03 16:16:37] baidu_qianfan.py:349 [t:6310473728]: no cache was found, download cache\n", - "[INFO] [04-03 16:16:38] baidu_qianfan.py:275 [t:6310473728]: get dataset info succeeded for dataset id ds-ragnuw6t3fazaict\n", - "[INFO] [04-03 16:16:38] utils.py:617 [t:6310473728]: start to export dataset\n", - "[INFO] [04-03 16:16:39] utils.py:621 [t:6310473728]: create dataset export task successfully\n", - "[INFO] [04-03 16:16:41] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:41] utils.py:634 [t:6310473728]: export status: 1, keep polling\n", - "[INFO] [04-03 16:16:43] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:44] utils.py:634 [t:6310473728]: export status: 1, keep polling\n", - "[INFO] [04-03 16:16:46] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:46] utils.py:634 [t:6310473728]: export status: 1, keep polling\n", - "[INFO] [04-03 16:16:48] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:48] utils.py:634 [t:6310473728]: export status: 1, keep polling\n", - "[INFO] [04-03 16:16:50] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:51] utils.py:634 [t:6310473728]: export status: 1, keep polling\n", - "[INFO] [04-03 16:16:53] utils.py:626 [t:6310473728]: polling export task status\n", - "[INFO] [04-03 16:16:53] utils.py:631 [t:6310473728]: export succeed\n", - "[INFO] [04-03 16:16:54] utils.py:565 [t:6310473728]: get export records succeeded for dataset id ds-ragnuw6t3fazaict\n", - "[INFO] [04-03 16:16:54] utils.py:579 [t:6310473728]: latest dataset with time2024-04-03 16:16:53 for dataset ds-ragnuw6t3fazaict\n", - "[INFO] [04-03 16:16:54] utils.py:645 [t:6310473728]: start to download file from url https://bj.bcebos.com/easydata-upload/_easydata-download_/fbb00c440e174c81a514c4b83570f816/%E8%AF%84%E4%BC%B0%E4%BB%BB%E5%8A%A1_model_run_ugjPawGCfd_%E7%BB%93%E6%9E%9C%E9%9B%86_4ee771V1_20240403_161638.zip?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2024-04-03T08%3A16%3A54Z%2F3600%2Fhost%2Fa8b9deebc0d519176b46ea96d13e1e8242401bbfe8b71ddf897317ed3734f784\n", - "[INFO] [04-03 16:16:54] baidu_qianfan.py:290 [t:6310473728]: download dataset zip to /Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/bin.zip succeeded\n", - "[INFO] [04-03 16:16:54] baidu_qianfan.py:315 [t:6310473728]: unzip dataset to path /Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content successfully\n", - "[INFO] [04-03 16:16:54] baidu_qianfan.py:319 [t:6310473728]: write dataset info to path /Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/info.json successfully\n", - "[INFO] [04-03 16:16:55] utils.py:331 [t:6310473728]: need create cached arrow file for /Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content/dataset.jsonl\n", - "[INFO] [04-03 16:16:55] utils.py:376 [t:6310473728]: start to write arrow table to /Users/pengyiyang/.qianfan_cache/dataset/Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content/dataset.arrow\n", - "[INFO] [04-03 16:16:55] utils.py:388 [t:6310473728]: writing succeeded\n", - "[INFO] [04-03 16:16:55] utils.py:262 [t:6310473728]: start to get memory_map from /Users/pengyiyang/.qianfan_cache/dataset/Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content/dataset.arrow\n", - "[INFO] [04-03 16:16:55] utils.py:237 [t:6310473728]: has got a memory-mapped table\n", - "[INFO] [04-03 16:16:55] utils.py:376 [t:6310473728]: start to write arrow table to /Users/pengyiyang/.qianfan_cache/dataset/.mapper_cache/Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content_9f55c2b6-c3d7-4afb-8afd-303de2aaca61.arrow\n", - "[INFO] [04-03 16:16:55] utils.py:388 [t:6310473728]: writing succeeded\n", - "[INFO] [04-03 16:16:55] utils.py:262 [t:6310473728]: start to get memory_map from /Users/pengyiyang/.qianfan_cache/dataset/.mapper_cache/Users/pengyiyang/.qianfan_cache/dataset/.qianfan_download_cache/dg-87rdaiqayhikmra3/ds-ragnuw6t3fazaict/1/content_9f55c2b6-c3d7-4afb-8afd-303de2aaca61.arrow\n", - "[INFO] [04-03 16:16:55] evaluation_manager.py:454 [t:8094817088]: start to evaluate llm 0\n", - "[INFO] [04-03 16:16:55] evaluation_manager.py:482 [t:8094817088]: start to merge evaluation result dataset\n" - ] - } - ], + "outputs": [], "source": [ "og_model_eval_result = em.eval([Model(version_id=\"amv-pzqtzdspm77m\")], eval_ds)" ] @@ -1013,7 +742,7 @@ ], "metadata": { "kernelspec": { - "display_name": "bce-qianfan-sdk-new", + "display_name": "py11", "language": "python", "name": "python3" }, @@ -1027,7 +756,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.11.9" + }, + "vscode": { + "interpreter": { + "hash": "42453736f0d03c53e6ad75478ebb5fcf2abe6d38094996bfa938cecc75099885" + } } }, "nbformat": 4, diff --git a/cookbook/finetune/trainer_finetune.ipynb b/cookbook/finetune/trainer_finetune.ipynb index 20f13a04..a8eb5499 100644 --- a/cookbook/finetune/trainer_finetune.ipynb +++ b/cookbook/finetune/trainer_finetune.ipynb @@ -895,7 +895,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.8" }, "orig_nbformat": 4, "vscode": { diff --git a/cookbook/function_call.ipynb b/cookbook/function_call.ipynb index 3fba8e76..1aa08690 100644 --- a/cookbook/function_call.ipynb +++ b/cookbook/function_call.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "id": "a2ef73d1b5366c1d", "metadata": { @@ -12,21 +13,22 @@ "## 简介\n", "\n", "function_call,顾名思义,通过给大模型提供 function 的说明描述,以及对应的入参出参 schema,让大模型输出 function 调用策略,结合多轮对话,以最终实现一个复杂的任务。\n", - "以下将以获取数据库中某类文件的数量为例子,通过调用千帆 Python SDK提供的 ERNIE-Bot 大模型以得到数据库中该语言的文件数量。\n", + "以下将以获取数据库中某类文件的数量为例子,通过调用千帆 Python SDK提供的 ERNIE 大模型以得到数据库中该语言的文件数量。\n", "\n", "## 准备\n", "\n", - "本文使用了千帆 Python SDK中的 chat_completion 模块,该模块提供了与千帆对话引擎的交互接口,目前支持function call的模型有ERNIE-Bot与ERNIE-Bot-4。" + "本文使用了千帆 Python SDK中的 chat_completion 模块,该模块提供了与千帆对话引擎的交互接口,目前支持function call的模型有`ERNIE-Functions-8K`与`ERNIE-3.5-8K`。" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "f37417f96d78b87e", "metadata": { "collapsed": false }, "source": [ - "首先安装千帆 Python SDK,版本号 >= 0.2.6。" + "首先安装千帆 Python SDK,版本号 >= 0.4.2。" ] }, { @@ -43,7 +45,7 @@ "outputs": [], "source": [ "%%capture\n", - "!pip install \"qianfan>=0.2.6\" -U" + "!pip install \"qianfan\" -U" ] }, { @@ -73,8 +75,8 @@ "import os\n", "\n", "# qianfan sdk 鉴权\n", - "# os.environ[\"QIANFAN_ACCESS_KEY\"]=\"...\"\n", - "# os.environ[\"QIANFAN_SECRET_KEY\"]=\"...\"\n" + "os.environ[\"QIANFAN_ACCESS_KEY\"]=\"...\"\n", + "os.environ[\"QIANFAN_SECRET_KEY\"]=\"...\"\n" ] }, { @@ -89,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 1, "id": "9af388291ce5434b", "metadata": { "ExecuteTime": { @@ -127,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 2, "id": "e883e0b92ccecade", "metadata": { "ExecuteTime": { @@ -166,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 3, "id": "ff5886e76c5a572f", "metadata": { "ExecuteTime": { @@ -176,18 +178,31 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING][2024-07-24 17:50:55.714] base.py:828 [t:8344509248]: This key `request_id` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:50:55.714] base.py:828 [t:8344509248]: This key `auto_concat_truncate` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:50:55.714] base.py:828 [t:8344509248]: This key `truncated_continue_prompt` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:50:55.715] base.py:828 [t:8344509248]: This key `truncate_overlong_msgs` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[INFO][2024-07-24 17:50:55.715] oauth.py:228 [t:8344509248]: trying to refresh access_token for ak `rRlk1M***`\n", + "[INFO][2024-07-24 17:50:55.863] oauth.py:243 [t:8344509248]: sucessfully refresh access_token\n" + ] + }, { "name": "stdout", "output_type": "stream", - "text": [] + "text": [ + "\n" + ] } ], "source": [ "import qianfan\n", "import json\n", "\n", - "# chat_comp = qianfan.ChatCompletion(model=\"ERNIE-Bot\") # 指定模型\n", - "chat_comp = qianfan.Function() # 使用ERNIE-Functions-8K\n", + "chat_comp = qianfan.ChatCompletion(model=\"ERNIE-Functions-8K\") # 指定模型\n", "query = \"请帮我查询一下数据库中用go撰写的代码文件数量\"\n", "msgs = qianfan.QfMessages()\n", "msgs.append(query,role='user')\n", @@ -210,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 4, "id": "9672df59be0cd560", "metadata": { "ExecuteTime": { @@ -224,12 +239,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "QfResponse(code=200, headers={'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Appid': '26217442', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'application/json; charset=utf-8', 'Date': 'Mon, 15 Jan 2024 05:06:42 GMT', 'P3p': 'CP=\" OTI DSP COR IVA OUR IND COM \"', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=24348C0A48AF1D67E33939F0A17EE737:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2145916555; path=/; domain=.baidu.com; version=1', 'Statement': 'AI-generated', 'Vary': 'Accept-Encoding', 'X-Aipe-Self-Def': 'eb_total_tokens:199,prompt_tokens:164,id:as-wpux8h3f0a', 'X-Baidu-Request-Id': 'sdk-py-0.2.7-evQ27Nto7272jjyB', 'X-Openapi-Server-Timestamp': '1705295200', 'Content-Length': '363'}, body={'id': 'as-wpux8h3f0a', 'object': 'chat.completion', 'created': 1705295202, 'result': '', 'is_truncated': False, 'need_clear_history': False, 'function_call': {'name': 'get_file_num', 'thoughts': '用户想要查询数据库中用go撰写的代码文件数量,我可以使用get_file_num工具来完成这个任务。', 'arguments': '{\"language\":\"go\"}'}, 'finish_reason': 'function_call', 'usage': {'prompt_tokens': 164, 'completion_tokens': 35, 'total_tokens': 199}}, statistic={'request_latency': 2.442524, 'total_latency': 2.4508387089999815})\n" + "{'id': 'as-9g8qscsdq5', 'object': 'chat.completion', 'created': 1721814657, 'result': '', 'is_truncated': False, 'need_clear_history': False, 'usage': {'prompt_tokens': 226, 'completion_tokens': 17, 'total_tokens': 243}, 'function_call': {'name': 'get_file_num', 'arguments': '{\"language\": \"go\"}'}}\n" ] } ], "source": [ - "print(resp)" + "print(resp.body)" ] }, { @@ -244,7 +259,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "80a90a0b3061bb21", "metadata": { "ExecuteTime": { @@ -254,16 +269,26 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING][2024-07-24 17:51:00.753] base.py:828 [t:8344509248]: This key `request_id` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:51:00.754] base.py:828 [t:8344509248]: This key `auto_concat_truncate` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:51:00.754] base.py:828 [t:8344509248]: This key `truncated_continue_prompt` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n", + "[WARNING][2024-07-24 17:51:00.755] base.py:828 [t:8344509248]: This key `truncate_overlong_msgs` does not seem to be a parameter that the model `ERNIE-Functions-8K` will accept\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "根据我们的查询,数据库中用Go撰写的代码文件数量为32个。如果您还有其他问题或需要进一步的信息,请随时告诉我。\n" + "数据库中用Go撰写的代码文件数量为32。\n" ] } ], "source": [ - "if resp.get(\"function_call\"):\n", + "if resp.get(\"function_call\"):\n", " # 获取函数名称、入参及返回值\n", " func_call_result = resp[\"function_call\"]\n", " func_name = func_call_result[\"name\"]\n", diff --git a/cookbook/function_call_with_tool.ipynb b/cookbook/function_call_with_tool.ipynb index 9c739b48..3f192287 100644 --- a/cookbook/function_call_with_tool.ipynb +++ b/cookbook/function_call_with_tool.ipynb @@ -246,7 +246,7 @@ } ], "source": [ - "chat_comp = qianfan.ChatCompletion(model=\"ERNIE-Bot-4\")\n", + "chat_comp = qianfan.ChatCompletion(model=\"ERNIE-4.0-8K\")\n", "query = \"今天是几号?\"\n", "msgs = qianfan.QfMessages()\n", "msgs.append(query,role=\"user\")\n", @@ -357,7 +357,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "base", "language": "python", "name": "python3" }, @@ -371,7 +371,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.6" + "version": "3.11.8" + }, + "vscode": { + "interpreter": { + "hash": "58f7cb64c3a06383b7f18d2a11305edccbad427293a2b4afa7abe8bfc810d4bb" + } } }, "nbformat": 4, diff --git a/cookbook/langchain_sequential.ipynb b/cookbook/langchain_sequential.ipynb index 3e8ce25e..402b22b9 100644 --- a/cookbook/langchain_sequential.ipynb +++ b/cookbook/langchain_sequential.ipynb @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 2, "id": "443e62b9-8a68-468e-b91d-f19de2993fe8", "metadata": {}, "outputs": [], @@ -73,6 +73,17 @@ "title=\"众里寻他千百度\"" ] }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9ce92b12", + "metadata": {}, + "outputs": [], + "source": [ + "from qianfan.utils.logging import enable_log, TRACE_LEVEL\n", + "enable_log(TRACE_LEVEL)" + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -87,17 +98,27 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "id": "c0a43154-7624-41b7-9832-f2022af41fba", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[DEBUG][2024-07-22 16:23:22.513] openapi_requestor.py:398 [t:6235107328]: requesting llm api endpoint: /chat/eb-instant\n", + "[TRACE][2024-07-22 16:23:22.528] base.py:175 [t:6235107328]: raw request: QfRequest(method='POST', url='https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant', query={}, headers={'Request_id': 'sdk-py-0.4.3rc0-6zGTPwpYVTvFiBOD'}, json_body={'top_p': 0.8, 'temperature': 0.95, 'penalty_score': 1, 'stop': None, 'messages': [{'role': 'user', 'content': '你是一位编剧。鉴于电影的标题,你的任务是为该标题撰写一个电影剧情的主干。\\n\\n标题:众里寻他千百度\\n编剧:以下是上述电影的主干:'}], 'stream': False, 'extra_parameters': {'request_source': 'qianfan_py_sdk_v0.4.3rc0'}}, files={}, retry_config=RetryConfig(retry_count=0, timeout=60, max_wait_interval=120, backoff_factor=1, jitter=1, retry_err_codes={2, 336100, 15, 18, 336501, 336502}))\n", + "[DEBUG][2024-07-22 16:23:30.325] openapi_requestor.py:398 [t:8344509248]: requesting llm api endpoint: /chat/eb-instant\n", + "[TRACE][2024-07-22 16:23:30.328] base.py:175 [t:8344509248]: raw request: QfRequest(method='POST', url='https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant', query={}, headers={'Request_id': 'sdk-py-0.4.3rc0-skYIeyt5LkkrsgfW'}, json_body={'top_p': 0.8, 'temperature': 0.95, 'penalty_score': 1, 'stop': None, 'messages': [{'role': 'user', 'content': '你是《豆瓣影评》的深度用户。鉴于该电影的故事主干,你的任务是为该电影撰写一篇宣传称赞的评论。\\n\\n主干:\\n众里寻他千百度\\n\\n电影的主干:\\n\\n故事发生在一个现代城市,主角李千寻(化名)是一位年轻有为的软件工程师,他一直致力于开发一款名为“智慧城市”的先进软件,以解决城市中日益严重的交通拥堵问题。然而,在项目即将完成之际,一场意外事故却令他的事业和生活陷入低谷。他的爱情和工作全都陷入了迷茫。就在千钧一发之际,一位名叫桃花的女演员偶然间出现并带给了他重新开始的力量,故事就在现代城市的街头巷尾,理想与现实的交汇中展开。\\n\\n第一幕:科技的春天\\n\\n本电影的主要人物之一李千寻是一个才华横溢的软件工程师,他在城市中最顶尖的科技公司工作。他的目标就是通过自己的智慧开发出一款名为“智慧城市”的软件,帮助城市解决交通拥堵问题。他的工作和生活充满挑战和希望,每天都在不断的努力中前行。\\n\\n第二幕:梦醒时分\\n\\n就在“智慧城市”即将成功的时候,一场意外的事故却打乱了所有的计划。千寻的生活和事业都陷入了低谷,他的爱人离开了他,他也失去了对未来的信心。在困惑和失落中,他开始质疑自己的价值和目标。\\n\\n第三幕:重生的机会\\n\\n就在千钧一发之际,一个偶然的机会,一个名叫桃花的女演员走进了他的生活。桃花的出现让千寻重新找到了生活的方向和目标。她鼓励千寻不要放弃,要勇敢面对现实,重新开始。在桃花的帮助下,千寻重新振作起来,开始了新的生活和工作。\\n\\n第四幕:众里寻他千百度\\n\\n在桃花的帮助下,千寻开始逐渐找回自己失去的一切。他重新回到了工作岗位,也重新找回了对生活的热爱和对理想的追求。他用自己的智慧和勇气为城市带来了新的希望和机会。电影的最后,他站在城市的高楼大厦之间,远望远方的风景,露出了满足和幸福的笑容。此时的他知道他已经找到了一片属于自己的新天地——这就是他追寻的人生方向,众里寻他千百度!\\n\\n此电影不仅是对科技的探讨和期待,更是一场对于人性的拷问与温暖展示,借以反映出人类的成长和挫折中更易明朗的道路抉择以及所珍视的理想的坚韧之心。这就是我们在这个快速发展的城市中寻找到的一个普通人追寻自己理想并获得成功的故事。\\n《豆瓣影评》戏剧评论家对上述戏剧的评论::'}], 'stream': False, 'extra_parameters': {'request_source': 'qianfan_py_sdk_v0.4.3rc0'}}, files={}, retry_config=RetryConfig(retry_count=0, timeout=60, max_wait_interval=120, backoff_factor=1, jitter=1, retry_err_codes={2, 336100, 15, 18, 336501, 336502}))\n" + ] + }, { "data": { "text/plain": [ - "'《众里寻他千百度》是一部令人惊喜的电影,它成功地呈现了一个富有奇幻色彩的故事,同时也展现出深厚的人性。这部电影以一种巧妙的方式开始,通过主人公小杰在网络上寻找兼职的过程中无意中被传送到了一个古代奇幻世界的主线,巧妙地串联起整个故事。\\n\\n在探索这个世界的过程中,小杰不仅遇到了各种人物和挑战,还逐渐发现这个世界与他所寻找的答案有关。他需要解开这个世界中的谜团,才能找到回家的路。这个过程不仅考验了他的智慧和勇气,也让他面对自己内心的挣扎和成长。这种深度的人性探索使得电影具有了更广泛的主题和观众吸引力。\\n\\n电影中的角色塑造也非常出色。小杰这个主角既有现代人的聪明和敏感,又有古代人的勇敢和坚定。他的感情发展与他对回家的渴望相交织,使他成为了一个令人难忘的角色。同时,小杰和他的伙伴们共同面对困难和挑战的经历,也使电影充满了合作与友谊的主题。\\n\\n此外,电影的视觉效果和音乐也堪称一流。它利用了奇幻元素创造了一个神秘而美丽的世界,同时配乐也恰到好处地营造出了一种神秘而引人入胜的氛围。这些视觉和听觉元素共同为观众创造了一个引人入胜的观影体验。\\n\\n总的来说,《众里寻他千百度》是一部富有创意和深度的电影。它不仅成功地呈现了一个奇幻世界的故事,也深入探讨了人性的主题。我强烈推荐这部电影给所有喜欢奇幻、冒险和深度故事的电影爱好者。这部电影无疑会成为今年的一部佳作,我期待看到更多观众被它所吸引并沉浸在其中。'" + "'这是一部充满了人性和希望的现代都市电影,其主线围绕一个年轻的软件工程师李千寻的故事展开。在李千寻身上,我们看到了科技的魅力,同时也看到了他在面临困境时,如何坚持自己的理想,重新站起来面对生活。\\n\\n故事从李千寻的坚定和努力出发,一直延续到他遭遇的挫折和困惑。正是这些痛苦和迷茫,让他的故事更加真实和感人。在故事的转折点上,李千寻遇到了桃花,这个偶然的机会改变了他的生活。桃花的出现,不仅让李千寻重新找到了生活的方向,也让他重新找回了对理想的追求。\\n\\n电影的结尾部分,李千寻站在城市的高楼大厦之间,远望远方的风景,露出了满足和幸福的笑容。这一幕不仅让人感受到了他的成长和成功,也让人感受到了他对未来的信心和期待。\\n\\n总的来说,《豆瓣影评》对这部电影的评价非常高。它不仅是一部讲述科技和人生的电影,更是一部充满人性、温暖和希望的电影。它让我们看到了在困境中坚持理想的重要性,也让我们看到了在成长过程中,我们如何找到属于自己的新天地。这是一部值得一看的电影,我相信它会给你带来深刻的思考和启示。'" ] }, - "execution_count": 3, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -212,8 +233,8 @@ "text": [ "\n", "\n", - "\u001B[1m> Entering new SimpleSequentialChain chain...\u001B[0m\n", - "\u001B[36;1m\u001B[1;3m故事开始于一个繁华的城市,主人公李翔(男,30岁,职业:自由作家)坐在咖啡厅的角落,手中紧握着一封破旧的信。这封信引领他来到这个城市,寻找一个失散多年的女子——苏梦(女,28岁,职业:舞蹈教师)。\n", + "\u001b[1m> Entering new SimpleSequentialChain chain...\u001b[0m\n", + "\u001b[36;1m\u001b[1;3m故事开始于一个繁华的城市,主人公李翔(男,30岁,职业:自由作家)坐在咖啡厅的角落,手中紧握着一封破旧的信。这封信引领他来到这个城市,寻找一个失散多年的女子——苏梦(女,28岁,职业:舞蹈教师)。\n", "\n", "李翔与苏梦相识于十年前的一个夏天。当时,他们都在海边的小镇上度假。苏梦的美丽与才华给李翔留下了深刻的印象,他们度过了一个美好的夏天。然而,分别后他们失去了联系。这封信是李翔在整理旧物时发现的,信是苏梦写给他的,信中提到他们在那个夏天曾共同许下的诺言。\n", "\n", @@ -225,8 +246,8 @@ "\n", "最后,李翔决定和林悦一起继续追求他们的梦想。他们在这个城市里开创了自己的事业,并且帮助了许多像他们一样有梦想的年轻人。他们的故事激励了更多的人去追求自己的梦想和生活价值。\n", "\n", - "电影以李翔和林悦在城市中的奋斗和成长为主线,展现了现代人在追求梦想和生活价值的过程中所经历的挫折、成长和启示。同时,电影也表达了珍惜身边的人和事,勇敢面对生活的态度。\u001B[0m\n", - "\u001B[33;1m\u001B[1;3m《寻找苏梦》是一部感人至深的现代爱情故事,同时也是一部充满启示和鼓励的人生旅程。影片以李翔的寻找为主线,展现了一个男人在追寻自己内心深处的梦想和感情的过程中所经历的挫折、成长和启示。\n", + "电影以李翔和林悦在城市中的奋斗和成长为主线,展现了现代人在追求梦想和生活价值的过程中所经历的挫折、成长和启示。同时,电影也表达了珍惜身边的人和事,勇敢面对生活的态度。\u001b[0m\n", + "\u001b[33;1m\u001b[1;3m《寻找苏梦》是一部感人至深的现代爱情故事,同时也是一部充满启示和鼓励的人生旅程。影片以李翔的寻找为主线,展现了一个男人在追寻自己内心深处的梦想和感情的过程中所经历的挫折、成长和启示。\n", "\n", "影片的情节紧凑,人物形象鲜明。每个角色都有自己的故事和价值,他们的经历和感情相互交织,形成了一幅丰富多彩的人生画卷。特别是李翔和苏梦之间的感情纠葛,以及他们在寻找过程中所经历的种种挫折和磨难,让人不禁为之动容。\n", "\n", @@ -234,9 +255,9 @@ "\n", "此外,影片还充满了许多细腻的情感元素。例如,李翔与林悦之间的友谊和相互扶持,以及他们在追求梦想的过程中所经历的成长和变化,都让人感受到了生活的美好和温暖。这些细腻的情感元素不仅让人对故事产生了共鸣,也让人对生活有了更深刻的认识和理解。\n", "\n", - "总的来说,《寻找苏梦》是一部充满情感和启示的电影。它不仅展现了一个男人在追寻自己内心深处的梦想和感情的过程中所经历的挫折、成长和启示,更是一部充满力量和温暖的电影。它鼓励人们勇敢面对生活中的挑战和困难,同时也提醒人们珍惜身边的人和事,去追求自己的梦想和生活价值。对于喜欢浪漫爱情故事的观众来说,《寻找苏梦》绝对是一部不容错过的佳作。\u001B[0m\n", + "总的来说,《寻找苏梦》是一部充满情感和启示的电影。它不仅展现了一个男人在追寻自己内心深处的梦想和感情的过程中所经历的挫折、成长和启示,更是一部充满力量和温暖的电影。它鼓励人们勇敢面对生活中的挑战和困难,同时也提醒人们珍惜身边的人和事,去追求自己的梦想和生活价值。对于喜欢浪漫爱情故事的观众来说,《寻找苏梦》绝对是一部不容错过的佳作。\u001b[0m\n", "\n", - "\u001B[1m> Finished chain.\u001B[0m\n" + "\u001b[1m> Finished chain.\u001b[0m\n" ] } ], @@ -319,9 +340,9 @@ "text": [ "\n", "\n", - "\u001B[1m> Entering new SequentialChain chain...\u001B[0m\n", + "\u001b[1m> Entering new SequentialChain chain...\u001b[0m\n", "\n", - "\u001B[1m> Finished chain.\u001B[0m\n" + "\u001b[1m> Finished chain.\u001b[0m\n" ] }, { @@ -387,9 +408,9 @@ "text": [ "\n", "\n", - "\u001B[1m> Entering new SequentialChain chain...\u001B[0m\n", + "\u001b[1m> Entering new SequentialChain chain...\u001b[0m\n", "\n", - "\u001B[1m> Finished chain.\u001B[0m\n" + "\u001b[1m> Finished chain.\u001b[0m\n" ] }, { @@ -463,7 +484,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.8" }, "vscode": { "interpreter": { diff --git a/cookbook/openai_adapter.ipynb b/cookbook/openai_adapter.ipynb index 91a18b21..6b1b86c1 100644 --- a/cookbook/openai_adapter.ipynb +++ b/cookbook/openai_adapter.ipynb @@ -225,7 +225,7 @@ ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "py11", "language": "python", "name": "python3" }, @@ -239,11 +239,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.11.9" }, "vscode": { "interpreter": { - "hash": "58f7cb64c3a06383b7f18d2a11305edccbad427293a2b4afa7abe8bfc810d4bb" + "hash": "42453736f0d03c53e6ad75478ebb5fcf2abe6d38094996bfa938cecc75099885" } } }, diff --git a/docs/batch_inference.md b/docs/batch_inference.md index f91b23e2..c18edd1a 100644 --- a/docs/batch_inference.md +++ b/docs/batch_inference.md @@ -97,7 +97,7 @@ from qianfan.dataset import Dataset ds = Dataset.load(...) # 用户可以设置 service_model 为自己想要的模型名,来直接对数据进行批量推理,以 EB 4 为例 -result = ds.test_using_llm(service_model="ERNIE-Bot-4") +result = ds.test_using_llm(service_model="ERNIE-4.0-8K") # 用户还可以设置 service_endpoint 来使用预置或自己的服务。 result = ds.test_using_llm(service_endpoint="completions_pro") diff --git a/docs/cli.md b/docs/cli.md index 96a5d28a..83a0bee2 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -49,7 +49,7 @@ $ qianfan chat [OPTIONS] **Options 选项**: -* `--model TEXT`:模型名称 [default:ERNIE-Bot-turbo] +* `--model TEXT`:模型名称 [default:ERNIE-Lite-8K] * `--endpoint TEXT`:模型的 endpoint * `--multi-line / --no-multi-line`:多行模式,提交时需要先按下 Esc 再回车,以避免与文本换行冲突 [default:no-multi-line] * `--list-model -l`:打印支持的模型名称列表 @@ -78,7 +78,7 @@ $ qianfan completion [OPTIONS] PROMPTS... **Options 选项**: -* `--model TEXT`:模型名称 [default:ERNIE-Bot-turbo] +* `--model TEXT`:模型名称 [default:ERNIE-Lite-8K] * `--endpoint TEXT`:模型的 endpoint * `--plain / --no-plain`:普通文本模式,不使用富文本 [default:no-plain] * `--list-model -l`:打印支持的模型名称列表 @@ -182,7 +182,7 @@ $ qianfan dataset predict [OPTIONS] DATASET **Options 选项**: -* `--model TEXT`:预测用的模型名称,可以用 `qianfan chat --list-model` 获取模型列表。 [default:ERNIE-Bot-turbo] +* `--model TEXT`:预测用的模型名称,可以用 `qianfan chat --list-model` 获取模型列表。 [default:ERNIE-Lite-8K] * `--endpoint TEXT`:预测用的模型 endpoint,该选项会覆盖 `--model` 选项。 * `--output PATH`:输出的文件路径。 [default:`%Y%m%d_%H%M%S.jsonl`] * `--input-columns TEXT`:输入的列名称。 [default:prompt] @@ -295,22 +295,25 @@ $ qianfan trainer [OPTIONS] COMMAND [ARGS]... **Commands 命令**: -* `run`:运行 trainer 任务 +* `finetune/postpretrain/dpo`:运行 trainer 任务 -#### run 发起训练任务 +#### 发起训练任务 运行 trainer 任务 **用法**: ```console -$ qianfan trainer run [OPTIONS] +$ qianfan trainer [finetune|postpretrain|dpo] [OPTIONS] ``` **Options 选项**: -* `--train-type TEXT`:训练类型 [required] -* `--dataset-id INTEGER`:数据集 id [required] +* `--trainer-pipeline-file,-f TEXT`: trainer配置文件的路径,具体配置文件的写法可参考[trainer_pipeline.json](./trainer_ppl_file_tmpl.json) [optional] +* `--train-type TEXT`: 训练模型名称,例如`ERNIE-Speed-8K`, 可以使用`qianfan trainer [finetune|postpretrain|dpo] -l` 进行查询 [optional] +* `--dataset-id TEXT`: 数据集 id,例如`ds-xxx` [optional] +* `--list-train-type`: 展示支持训练的模型名称列表 +* `--show-config-limit,--show,-s TEXT`: 展示某个模型支持的训练超参 * `--help`:展示帮助文档 训练相关配置,参数含义与 [训练 API 文档](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/mlmrgo4yx#body%E5%8F%82%E6%95%B0) 中对应参数含义一致: @@ -336,6 +339,20 @@ $ qianfan trainer run [OPTIONS] * `--deploy-pool-type [public_resource|private_resource]`:资源池类型 [default:private_resource] * `--deploy-service-type [chat|completion|embedding|text2_image]`:服务类型 [default:chat] +#### 查看trainer训练任务信息: + +**用法**: + +```console +$ qianfan trainer info [OPTIONS] +``` + +**Options 选项**: + +* `--trainer-id TEXT`:trainer id [optional] +* `--task-id TEXT` 千帆平台训练任务id [optional] +* `--help`:展示帮助文档 + ### evaluation 评估 运行评估任务 diff --git a/docs/data.md b/docs/data.md index 867f5de5..2c79d373 100644 --- a/docs/data.md +++ b/docs/data.md @@ -152,18 +152,24 @@ print(resp['result']) 在千帆平台创建一个数据增强任务,需要提供源数据集 ID `source_dataset_id` ,目标数据集 ID `destination_dataset_id` ,需要使用的大模型服务名 `service_name` ,对应的服务 url `service_url` ,应用 id `app_id` ,样本种子数 `num_seed_fewshot` ,生成实例数 `num_instances_to_generate` ,相似度阈值 `similarity_threshold`。详细方法和返回参数字段参见 [API 文档](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Dlp6iv0zw) ```python -resp = Data.create_dataset_augmenting_task( - "name_of_aug_task", - 12, - 34, - "ERNIE-Bot", - "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions", - 1234, - 1, - 1, - 0.5, +import os +from qianfan import resources + +# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk +os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak" +os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk" + +resp = resources.Data.create_dataset_augmenting_task( + name='aug_task_01', + source_dataset_id="ds-in20jpw3if43xcpb", + destination_dataset_id="ds-8r6y2are3bb54tkr", + dev_api_id=1431, + app_id=26217111, + num_seed_fewshot=1, + num_instances_to_generate=1, + similarity_threshold=0.5, ) -print(resp['result']) +print(resp.body) ``` #### **查看数据增强详情** diff --git a/docs/go/inference.md b/docs/go/inference.md index e050af76..335ca762 100644 --- a/docs/go/inference.md +++ b/docs/go/inference.md @@ -2,12 +2,12 @@ ## Chat 对话 -用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE-Bot 在内的所有预置模型,如下所示: +用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE 系列在内的所有预置模型,如下所示: ```go chat := qianfan.NewChatCompletion() -// 调用默认模型,即 ERNIE-Bot-turbo +// 调用默认模型,即 ERNIE-Lite-8K resp, err := chat.Do( context.TODO(), &qianfan.ChatCompletionRequest{ @@ -24,7 +24,7 @@ fmt.Print(resp.Result) // 指定特定模型 chat := qianfan.NewChatCompletion( - qianfan.WithModel("ERNIE-Bot-4"), // 支持的模型可以通过 chat.ModelList() 获取 + qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 chat.ModelList() 获取 ) // 或者通过 WithEndpoint 指定自行发布的模型 chat := qianfan.NewChatCompletion( @@ -34,15 +34,13 @@ chat := qianfan.NewChatCompletion( 目前,千帆大模型平台提供了一系列可供用户通过 SDK 直接使用的模型,模型清单如下所示: -- [ERNIE-Bot-4](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/clntwmv7t) -- [ERNIE-Bot](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11) -- [ERNIE-Bot-8K](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/6lp69is2a) +- [ERNIE-4.0-8K](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/clntwmv7t) +- [ERNIE-3.5-8K](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11) - [ERNIE-3.5-4K-0205](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Llsr67q8h) - [ERNIE-3.5-8K-0205](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/llsr6hjxo) - [ERNIE-3.5-8K-1222](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/mlt3vdi2j) -- [ERNIE-Speed](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/klqx7b1xf) -- [ERNIE-Bot-turbo](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/4lilb2lpf) (默认) -- [ERNIE-Bot-turbo-AI](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Alp0kdm0n) +- [ERNIE-Speed-8K](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/klqx7b1xf) +- [ERNIE-Lite-8K](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dltgsna1o) (默认) - [BLOOMZ-7B](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Jljcadglj) - [Llama-2-7b-chat](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Rlki1zlai) - [Llama-2-13b-chat](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/2lki2us1e) @@ -94,11 +92,11 @@ for { 对于不需要对话,仅需要根据 prompt 进行补全的场景来说,用户可以使用 `Completion` 来完成这一任务。 ```go -completion := qianfan.NewCompletion() // 默认使用 ERNIE-Bot-turbo 模型 +completion := qianfan.NewCompletion() // 不传入使用默认模型 // 可以通过 WithModel 指定模型 completion := qianfan.NewCompletion( - qianfan.WithModel("ERNIE-Bot-4"), + qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 completion.ModelList() 获取 ) // 或者通过 WithEndpoint 指定 endpoint @@ -162,7 +160,7 @@ embed := qianfan.NewEmbedding() // 默认使用 Embedding-V1 模型 // 可以通过 WithModel 指定模型 embed := qianfan.NewEmbedding( - qianfan.WithModel("ERNIE-Bot-4"), // 支持的模型可以通过 embed.ModelList() 获取 + qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 embed.ModelList() 获取 ) // 或者通过 WithEndpoint 指定 endpoint embed := qianfan.NewEmbedding( diff --git a/docs/inference.md b/docs/inference.md index 0f926f0a..085b62ac 100644 --- a/docs/inference.md +++ b/docs/inference.md @@ -14,7 +14,7 @@ #### **Chat 对话** -用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE-Bot 在内的所有预置模型,如下所示: +用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE系列 在内的所有预置模型,如下所示: ```python import qianfan @@ -22,7 +22,7 @@ import qianfan # 指定特定模型 # 模型名称可以通过 qianfan.ChatCompletion.models() 获取 # 也可以在命令行运行 qianfan chat --list-model 查看 -# 如果不设置 model,则使用默认模型 ERNIE-Bot-turbo +# 如果不设置 model,则使用默认模型 chat_comp = qianfan.ChatCompletion(model="ERNIE-Speed-8K") # 对于自行发布的模型,或者是不在预置模型列表中的模型,用户可以通过指定 endpoint 调用 @@ -177,7 +177,7 @@ import qianfan # 指定特定模型 # 模型名称可以通过 qianfan.Completion.models() 获取 # 也可以在命令行运行 qianfan completion --list-model 查看 -# 如果不设置 model,则使用默认模型 ERNIE-Bot-turbo +# 如果不设置 model,则使用默认模型 ERNIE-Lite-8K comp = qianfan.Completion(model="ERNIE-Speed-8K") # 对于自行发布的模型,或者是不在预置模型列表中的模型,用户可以通过指定 endpoint 调用 diff --git a/docs/javascript/browser.md b/docs/javascript/browser.md index 5936ed35..7433348f 100644 --- a/docs/javascript/browser.md +++ b/docs/javascript/browser.md @@ -79,7 +79,7 @@ QIANFAN_SECRET_KEY=another_secret_key }, ], stream: true, - }, 'ERNIE-Bot-turbo'); + }, 'ERNIE-Lite-8K'); console.log('流式返回结果'); for await (const chunk of stream) { console.log(chunk); @@ -142,7 +142,7 @@ async function main() { content: '今天深圳天气', }, ], - }, "ERNIE-Bot-turbo"); + }, "ERNIE-Lite-8K"); console.log(resp); } @@ -177,7 +177,7 @@ main import {ChatCompletion, setEnvVariable} from "@baiducloud/qianfan"; const client = new ChatCompletion({QIANFAN_BASE_URL: 'http://172.18.184.85:8002', QIANFAN_CONSOLE_API_BASE_URL: 'http://172.18.184.85:8003'}); -async function main() { // 调用默认模型,即 ERNIE-Bot-turbo +async function main() { // 调用默认模型 const resp = await client.chat({ messages: [ { @@ -323,7 +323,7 @@ const client = Completions({QIANFAN_BASE_URL: 'http://172.18.184.85:8002', QIANF async function main() { const resp = await client.completions({ prompt: '你好', - }, 'ERNIE-Bot'); + }, 'ERNIE-3.5-8K'); console.log(resp); } diff --git a/docs/semantic_kernel.md b/docs/semantic_kernel.md index 0275e9de..74d4d211 100644 --- a/docs/semantic_kernel.md +++ b/docs/semantic_kernel.md @@ -16,7 +16,7 @@ import asyncio TEST_MESSAGES = [{"role":"user", "content":"hi"}] async def run_chat(): - qf_chat = QianfanChatCompletion(model="ERNIE-Bot") + qf_chat = QianfanChatCompletion(model="ERNIE-3.5-8K") # call chat with messages res = await qf_chat.complete_chat_async( TEST_MESSAGES, @@ -58,7 +58,7 @@ import semantic_kernel as sk kernel = sk.Kernel() kernel.add_text_completion_service( - "qianfan_comp", QianfanChatCompletion(model="ERNIE-Bot"), + "qianfan_comp", QianfanChatCompletion(model="ERNIE-3.5-8K"), ) prompt = """{{$input}} diff --git a/docs/tool.md b/docs/tool.md index 86975921..024a6f85 100644 --- a/docs/tool.md +++ b/docs/tool.md @@ -85,7 +85,7 @@ os.environ["QIANFAN_AK"] = "此处填写你的AK" os.environ["QIANFAN_SK"] = "此处填写你的SK" tools = [LightSwitchTool().to_langchain_tool()] -llm = QianfanChatEndpoint(model="ERNIE-Bot") +llm = QianfanChatEndpoint(model="ERNIE-3.5-8K") agent = QianfanSingleActionAgent.from_system_prompt(tools, llm) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) diff --git a/docs/trainer.md b/docs/trainer.md index cf4a3c0b..ae343a60 100644 --- a/docs/trainer.md +++ b/docs/trainer.md @@ -177,4 +177,13 @@ trainer = LLMFinetune( event_handler=eh, ) trainer.run() -``` \ No newline at end of file +``` + +## 使用命令行工具发起trainer训练: + +千帆SDK在命令行工具中提供了对trainer的封装,可以直接通过调用以下命令进行训练: + +``` +qianfan trainer finetune -f xx.json +``` +命令详情请参考 [cli-trainer](./cli.md#trainer-训练) \ No newline at end of file diff --git a/docs/utils.md b/docs/utils.md index 17afe59a..c74b330c 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -11,9 +11,9 @@ text = "这是待计算 token 数量的一段文本" count = qianfan.Tokenizer.count_tokens(text) ``` -**远程精确计算** 依赖千帆平台所提供的 API,目前仅支持 `ERNIE-Bot` 系列模型,包括 `ERNIE-Bot`、`ERNIE-Bot-turbo`、`ERNIE-Bot-4`。SDK 侧使用方法相同,仅需额外传入 `mode = "remote"`,但由于需要调用远程接口,所以请按照上文先设置好 AK 与 SK,或者在该函数中传入。 +**远程精确计算** 依赖千帆平台所提供的 API。SDK 侧使用方法相同,仅需额外传入 `mode = "remote"`,但由于需要调用远程接口,所以请按照上文先设置好 AK 与 SK,或者在该函数中传入。 ```python -count = qianfan.Tokenizer.count_tokens(text, mode = "remote") +count = qianfan.Tokenizer.count_tokens(text, mode = "remote", model='ernie-3.5-8k') print(count) # => 18 ``` diff --git a/go/README.md b/go/README.md index 0ae2a42c..904f4eef 100644 --- a/go/README.md +++ b/go/README.md @@ -62,11 +62,11 @@ qianfan.GetConfig().SK = "your_sk" 可以使用 `ChatCompletion` 对象完成对话相关操作,可以通过如下方法获取一个 `ChatCompletion` 对象: ```go -chat := qianfan.NewChatCompletion() // 默认使用 ERNIE-Bot-turbo 模型 +chat := qianfan.NewChatCompletion() // 使用默认模型 // 可以通过 WithModel 指定模型 chat := qianfan.NewChatCompletion( - qianfan.WithModel("ERNIE-Bot-4"), // 支持的模型可以通过 chat.ModelList() 获取 + qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 chat.ModelList() 获取 ) // 或者通过 WithEndpoint 指定 endpoint chat := qianfan.NewChatCompletion( @@ -124,11 +124,11 @@ for { 对于不需要对话,仅需要根据 prompt 进行补全的场景来说,用户可以使用 `Completion` 来完成这一任务。 ```go -completion := qianfan.NewCompletion() // 默认使用 ERNIE-Bot-turbo 模型 +completion := qianfan.NewCompletion() // 使用默认模型 // 可以通过 WithModel 指定模型 completion := qianfan.NewCompletion( - qianfan.WithModel("ERNIE-Bot-4"), + qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 completion.ModelList() 获取 ) // 或者通过 WithEndpoint 指定 endpoint @@ -185,7 +185,7 @@ embed := qianfan.NewEmbedding() // 默认使用 Embedding-V1 模型 // 可以通过 WithModel 指定模型 embed := qianfan.NewEmbedding( - qianfan.WithModel("ERNIE-Bot-4"), // 支持的模型可以通过 embed.ModelList() 获取 + qianfan.WithModel("Embedding-V1"), // 支持的模型可以通过 embed.ModelList() 获取 ) // 或者通过 WithEndpoint 指定 endpoint embed := qianfan.NewEmbedding( diff --git a/go/examples/function_call/main.go b/go/examples/function_call/main.go index 03f24842..81b0647c 100644 --- a/go/examples/function_call/main.go +++ b/go/examples/function_call/main.go @@ -52,7 +52,7 @@ func main() { // qianfan.GetConfig().SecretKey = "your_secret_key" chat := qianfan.NewChatCompletion( - qianfan.WithModel("ERNIE-Bot"), // 利用 ERNIE-Bot 模型的 function call 能力 + qianfan.WithModel("ERNIE-3.5-8K"), // 利用 ERNIE-3.5-8K 模型的 function call 能力 ) messages := []qianfan.ChatCompletionMessage{ qianfan.ChatCompletionUserMessage("请帮我查询一下上海今天的天气"), diff --git a/go/qianfan/chat_completion.go b/go/qianfan/chat_completion.go index 336187a7..07945ceb 100644 --- a/go/qianfan/chat_completion.go +++ b/go/qianfan/chat_completion.go @@ -83,10 +83,10 @@ type ChatCompletionRequest struct { // 内置 chat 模型的 endpoint var ChatModelEndpoint = map[string]string{ - "ERNIE-4.0-Turbo-8K": "/chat/ernie-4.0-turbo-8k", - "ERNIE-4.0-8K-Latest": "/chat/ernie-4.0-8k-latest", - "ERNIE-4.0-8K-0613": "/chat/ernie-4.0-8k-0613", - "ERNIE-3.5-8K-0613": "/chat/ernie-3.5-8k-0613", + "ERNIE-4.0-Turbo-8K": "/chat/ernie-4.0-turbo-8k", + "ERNIE-4.0-8K-Latest": "/chat/ernie-4.0-8k-latest", + "ERNIE-4.0-8K-0613": "/chat/ernie-4.0-8k-0613", + "ERNIE-3.5-8K-0613": "/chat/ernie-3.5-8k-0613", "ERNIE-Bot-turbo": "/chat/eb-instant", "ERNIE-Lite-8K-0922": "/chat/eb-instant", "ERNIE-Lite-8K": "/chat/ernie-lite-8k", @@ -114,7 +114,7 @@ var ChatModelEndpoint = map[string]string{ "ERNIE-Tiny-8K": "/chat/ernie-tiny-8k", "ERNIE-Function-8K": "/chat/ernie-func-8k", "ERNIE-Character-8K": "/chat/ernie-char-8k", - "ERNIE-Character-Fiction-8K": "/chat/ernie-char-fiction-8k", + "ERNIE-Character-Fiction-8K": "/chat/ernie-char-fiction-8k", "ERNIE-Bot-turbo-AI": "/chat/ai_apaas", "EB-turbo-AppBuilder": "/chat/ai_apaas", "BLOOMZ-7B": "/chat/bloomz_7b1", @@ -144,10 +144,10 @@ type inputLimitInfo struct { // 定义包含所需信息的 map var limitMapInModelName = map[string]inputLimitInfo{ - "ERNIE-4.0-Turbo-8K": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "ERNIE-4.0-8K-Latest": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "ERNIE-4.0-8K-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "ERNIE-3.5-8K-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "ERNIE-4.0-Turbo-8K": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "ERNIE-4.0-8K-Latest": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "ERNIE-4.0-8K-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "ERNIE-3.5-8K-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, "ERNIE-Lite-8K-0922": {MaxInputChars: 11200, MaxInputTokens: 7168}, "ERNIE-Lite-8K": {MaxInputChars: 11200, MaxInputTokens: 7168}, "ERNIE-Lite-8K-0308": {MaxInputChars: 11200, MaxInputTokens: 7168}, @@ -194,10 +194,10 @@ var limitMapInModelName = map[string]inputLimitInfo{ } var limitMapInEndpoint = map[string]inputLimitInfo{ - "/chat/ernie-4.0-turbo-8k": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "/chat/ernie-4.0-8k-latest": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "/chat/ernie-4.0-8k-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, - "/chat/ernie-3.5-8k-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "/chat/ernie-4.0-turbo-8k": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "/chat/ernie-4.0-8k-latest": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "/chat/ernie-4.0-8k-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, + "/chat/ernie-3.5-8k-0613": {MaxInputChars: 20000, MaxInputTokens: 5120}, "/chat/eb-instant": {MaxInputChars: 11200, MaxInputTokens: 7168}, "/chat/ernie-lite-8k": {MaxInputChars: 11200, MaxInputTokens: 7168}, "/chat/completions": {MaxInputChars: 20000, MaxInputTokens: 5120}, @@ -221,7 +221,7 @@ var limitMapInEndpoint = map[string]inputLimitInfo{ "/chat/ernie-tiny-8k": {MaxInputChars: 24000, MaxInputTokens: 6144}, "/chat/ernie-func-8k": {MaxInputChars: 24000, MaxInputTokens: 6144}, "/chat/ernie-char-8k": {MaxInputChars: 24000, MaxInputTokens: 6144}, - "/chat/ernie-char-fiction-8k": {MaxInputChars: 24000, MaxInputTokens: 6144}, + "/chat/ernie-char-fiction-8k": {MaxInputChars: 24000, MaxInputTokens: 6144}, "/chat/bloomz_7b1": {MaxInputChars: 4800, MaxInputTokens: 0}, "/chat/llama_2_7b": {MaxInputChars: 4800, MaxInputTokens: 0}, "/chat/llama_2_13b": {MaxInputChars: 4800, MaxInputTokens: 0}, @@ -451,12 +451,12 @@ func (c *ChatCompletion) ModelList() []string { // 创建一个 ChatCompletion 对象 // -// chat := qianfan.NewChatCompletion() // 默认使用 ERNIE-Bot-turbo 模型 +// chat := qianfan.NewChatCompletion() // 使用默认模型 // // 可以通过 WithModel 指定模型 // chat := qianfan.NewChatCompletion( // -// qianfan.WithModel("ERNIE-Bot-4"), // 支持的模型可以通过 chat.ModelList() 获取 +// qianfan.WithModel("ERNIE-4.0-8K"), // 支持的模型可以通过 chat.ModelList() 获取 // // ) // 或者通过 WithEndpoint 指定 endpoint diff --git a/go/qianfan/completion.go b/go/qianfan/completion.go index 0315c269..fc8bafaa 100644 --- a/go/qianfan/completion.go +++ b/go/qianfan/completion.go @@ -226,7 +226,7 @@ func (c *Completion) stream(ctx context.Context, request *CompletionRequest) (*M // // // 可以通过 WithModel 指定模型 // completion := qianfan.NewCompletion( -// qianfan.WithModel("ERNIE-Bot-4"), +// qianfan.WithModel("ERNIE-4.0-8K"), // // 支持的模型可以通过 completion.ModelList() 获取 // ) // // 或者通过 WithEndpoint 指定 endpoint diff --git a/go/qianfan/version.go b/go/qianfan/version.go index a7d77c8c..2952902b 100644 --- a/go/qianfan/version.go +++ b/go/qianfan/version.go @@ -19,7 +19,7 @@ // 千帆SDK提供大模型工具链最佳实践,让AI工作流和AI原生应用优雅且便捷地访问千帆大模型平台。 // 目前 SDK 提供了以下功能: // -// - 大模型推理:实现了对一言(ERNIE-Bot)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding等。 +// - 大模型推理:实现了对一言(ERNIE)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding等。 // // 文档:https://github.com/baidubce/bce-qianfan-sdk/blob/main/go/README.md // 示例代码:https://github.com/baidubce/bce-qianfan-sdk/tree/main/go/examples diff --git a/java/README.md b/java/README.md index 1a2ac814..fa6de481 100644 --- a/java/README.md +++ b/java/README.md @@ -74,7 +74,7 @@ Qianfan qianfan = new Qianfan(Auth.TYPE_OAUTH, "your_ak", "your_sk"); ```java ChatResponse response = new Qianfan().chatCompletion() - .model("ERNIE-Bot-4") // 使用model指定预置模型 + .model("ERNIE-4.0-8K") // 使用model指定预置模型 // .endpoint("completions_pro") // 也可以使用endpoint指定任意模型 (二选一) .addMessage("user", "你好") // 添加用户消息 (此方法可以调用多次,以实现多轮对话的消息传递) .temperature(0.7) // 自定义超参数 @@ -90,7 +90,7 @@ System.out.println(response.getResult()); ```java new Qianfan().chatCompletion() - .model("ERNIE-Bot-4") + .model("ERNIE-4.0-8K") .addMessage("user", "你好") .executeStream() // 发起流式请求 .forEachRemaining(chunk -> System.out.print(chunk.getResult())); // 流式迭代,并打印消息 diff --git a/javascript/README.md b/javascript/README.md index 6664353a..bdd48e5d 100644 --- a/javascript/README.md +++ b/javascript/README.md @@ -150,7 +150,7 @@ async function main() { content: '今天深圳天气', }, ], - }, "ERNIE-Bot-turbo"); + }, "ERNIE-Lite-8K"); console.log(resp); } @@ -184,7 +184,7 @@ main import {ChatCompletion, setEnvVariable} from "@baiducloud/qianfan"; const client = new ChatCompletion(); -async function main() { // 调用默认模型,即 ERNIE-Bot-turbo +async function main() { // 调用默认模型,即 ERNIE--turbo const resp = await client.chat({ messages: [ { @@ -330,7 +330,7 @@ const client = new Completions(); async function main() { const resp = await client.completions({ prompt: '你好', - }, 'ERNIE-Bot'); + }, 'ERNIE-3.5-8K'); console.log(resp); } diff --git a/python/README.pypi.md b/python/README.pypi.md index 2a00b09c..aa8c034b 100644 --- a/python/README.pypi.md +++ b/python/README.pypi.md @@ -36,7 +36,7 @@ import qianfan os.environ["QIANFAN_ACCESS_KEY"]="..." os.environ["QIANFAN_SECRET_KEY"]="..." -chat_comp = qianfan.ChatCompletion(model="ERNIE-Bot") +chat_comp = qianfan.ChatCompletion(model="ERNIE-4.0-8K") resp = chat_comp.do(messages=[{ "role": "user", "content": "你好,千帆" @@ -63,7 +63,7 @@ import qianfan os.environ["QIANFAN_AK"]="..." os.environ["QIANFAN_SK"]="..." -chat_comp = qianfan.ChatCompletion(model="ERNIE-Bot") +chat_comp = qianfan.ChatCompletion(model="ERNIE-4.0-8K") resp = chat_comp.do(messages=[{ "role": "user", "content": "你好,千帆" diff --git a/python/qianfan/common/client/plugin.py b/python/qianfan/common/client/plugin.py index 7dbcc2b2..8b0b4069 100644 --- a/python/qianfan/common/client/plugin.py +++ b/python/qianfan/common/client/plugin.py @@ -361,7 +361,9 @@ def chat_in_terminal(self) -> None: def plugin_entry( endpoint: Optional[str] = typer.Option( None, - help="Endpoint of the plugin. ERNIE-Bot plugin will be used if not specified.", + help=( + "Endpoint of the plugin. ERNIE-4.0-8K plugin will be used if not specified." + ), ), # tui: bool = typer.Option(False, help="Using Terminal UI"), multi_line: bool = typer.Option( diff --git a/python/qianfan/common/prompt/prompt.py b/python/qianfan/common/prompt/prompt.py index 3c473d88..5e9dcc36 100644 --- a/python/qianfan/common/prompt/prompt.py +++ b/python/qianfan/common/prompt/prompt.py @@ -770,7 +770,7 @@ def evaluate( "args": {"name": "Alice"}, "expected": "Hello, Alice!" }], - client=Completion(model="ERNIE-Bot-4"), + client=Completion(model="ERNIE-4.0-8K"), standard=PromptScoreStandard.Semantic ) """ diff --git a/python/qianfan/common/tool/baidu_search_tool.py b/python/qianfan/common/tool/baidu_search_tool.py index 732a370a..e5a44b84 100644 --- a/python/qianfan/common/tool/baidu_search_tool.py +++ b/python/qianfan/common/tool/baidu_search_tool.py @@ -55,7 +55,7 @@ def __init__( self.top_n = top_n self.channel = channel if client is None: - self.client = Completion(model="ERNIE-Bot-turbo") + self.client = Completion(model="ERNIE-Speed-8K") else: self.client = client self.with_reference = with_reference diff --git a/python/qianfan/resources/console/finetune.py b/python/qianfan/resources/console/finetune.py index 17cb0f90..f226cab9 100644 --- a/python/qianfan/resources/console/finetune.py +++ b/python/qianfan/resources/console/finetune.py @@ -76,9 +76,9 @@ def create_task( name (str): The name of the fine-tuning task. base_train_type (str): - The base training type of the fine-tuning task. e.g. "ERNIE-Bot-turbo" + The base training type of the fine-tuning task. e.g. "ERNIE-Speed-8K" train_type (str): - The training type of the fine-tuning task. e.g. "ERNIE-Bot-turbo-0922 + The training type of the fine-tuning task. e.g. "ERNIE-Speed-8K description (Optional[str]): An optional description for the fine-tuning task. kwargs (Any): diff --git a/python/qianfan/resources/tools/tokenizer.py b/python/qianfan/resources/tools/tokenizer.py index e1381742..d9653db3 100644 --- a/python/qianfan/resources/tools/tokenizer.py +++ b/python/qianfan/resources/tools/tokenizer.py @@ -36,7 +36,7 @@ def count_tokens( cls, text: str, mode: Literal["local", "remote"] = "local", - model: str = "ERNIE-Bot", + model: str = "ernie-3.5-8k", **kwargs: Any, ) -> int: """ @@ -51,10 +51,10 @@ def count_tokens( (Chinese characters count * 0.625 + English word count * 1) `remote`: use qianfan api to calculate the token count. API will return accurate - token count, but only ERNIE-Bot series models are supported. + token count. model (str, optional): The name of the model to be used for token counting, which - may influence the counting strategy. Default is 'ERNIE-Bot'. + may influence the counting strategy. Default is 'ernie-3.5-8k'. kwargs (Any): Additional keyword arguments that can be passed to customize the request. @@ -74,7 +74,7 @@ def count_tokens( @staticmethod @qianfan_api_request - def _eb_tokenizer(text: str, model: str = "ERNIE-Bot", **kwargs: Any) -> QfRequest: + def _eb_tokenizer(text: str, model: str, **kwargs: Any) -> QfRequest: """ create the request and use `qianfan_api_request` to get the response """ @@ -96,7 +96,7 @@ def _remote_count_tokens_eb(cls, text: str, model: str, **kwargs: Any) -> int: def _local_count_tokens( cls, text: str, - model: str = "ERNIE-Bot", + model: str = "ernie-3.5-8k", han_tokens: float = 0.625, word_tokens: float = 1, ) -> int: diff --git a/python/qianfan/tests/langchain/agent_test.py b/python/qianfan/tests/langchain/agent_test.py index 61711b01..44fd26cb 100644 --- a/python/qianfan/tests/langchain/agent_test.py +++ b/python/qianfan/tests/langchain/agent_test.py @@ -67,7 +67,7 @@ def test_sync_qianfan_single_agent(): tools = get_tool_list() agent_qianfan = QianfanSingleActionAgent.from_system_prompt( - tools, QianfanChatEndpoint(model="ERNIE-Bot-4") + tools, QianfanChatEndpoint(model="ERNIE-4.0-8K") ) agent_executor_qianfan = AgentExecutor(agent=agent_qianfan, tools=tools) assert agent_executor_qianfan.run("帮我搜索一篇 physics 领域的论文") == "测试成功" @@ -87,7 +87,7 @@ async def test_async_qianfan_single_agent(): tools = get_tool_list() agent_qianfan = QianfanSingleActionAgent.from_system_prompt( - tools, QianfanChatEndpoint(model="ERNIE-Bot-4") + tools, QianfanChatEndpoint(model="ERNIE-4.0-8K") ) agent_executor_qianfan = AgentExecutor(agent=agent_qianfan, tools=tools) assert ( @@ -108,7 +108,7 @@ def test_sync_qianfan_multi_agent(): tools = get_tool_list() agent_qianfan = QianfanMultiActionAgent.from_system_prompt( - tools, QianfanChatEndpoint(model="ERNIE-Bot-4") + tools, QianfanChatEndpoint(model="ERNIE-4.0-8K") ) agent_executor_qianfan = AgentExecutor(agent=agent_qianfan, tools=tools) assert agent_executor_qianfan.run("帮我搜索一篇 physics 领域的论文") == "测试成功" @@ -128,7 +128,7 @@ async def test_async_qianfan_multi_agent(): tools = get_tool_list() agent_qianfan = QianfanMultiActionAgent.from_system_prompt( - tools, QianfanChatEndpoint(model="ERNIE-Bot-4") + tools, QianfanChatEndpoint(model="ERNIE-4.0-8K") ) agent_executor_qianfan = AgentExecutor(agent=agent_qianfan, tools=tools) assert ( diff --git a/python/qianfan/tests/trainer_test.py b/python/qianfan/tests/trainer_test.py index 3e4f93cb..230e5023 100644 --- a/python/qianfan/tests/trainer_test.py +++ b/python/qianfan/tests/trainer_test.py @@ -222,7 +222,7 @@ def test_model_deploy(): def test_service_exec(): - svc = Service(model="ERNIE-Bot", service_type=ServiceType.Chat) + svc = Service(model="ERNIE-3.5-8K", service_type=ServiceType.Chat) resp = svc.exec({"messages": [{"content": "hi", "role": "user"}]}) assert resp is not None assert resp["result"] != "" @@ -281,7 +281,7 @@ def test__parse_from_input(): assert isinstance(result, Model) assert result.set_id == "17000" assert result.id == "12333" - input = {"service": Service(model="ERNIE-Bot")} + input = {"service": Service(model="ERNIE-4.0-8K")} result = action._parse_from_input(input) assert isinstance( result, Service diff --git a/python/qianfan/tests/utils/mock_server.py b/python/qianfan/tests/utils/mock_server.py index f452f4dc..28ad61f0 100644 --- a/python/qianfan/tests/utils/mock_server.py +++ b/python/qianfan/tests/utils/mock_server.py @@ -1820,7 +1820,7 @@ def get_evaluation_info(): "appId": 1483416585, "appAk": "uiuj6hZY5HUrlFej1deMUAKM", "appSk": "Imvaecl8UrUPTMOyFSraxpt1IpkGFTCp", - "apiName": "ERNIE-Bot", + "apiName": "ERNIE-3.5-8K", "apiUrl": "/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions", "prompt": { "templateName": " 裁判员模型打分模板(含参考答案)", @@ -1995,7 +1995,7 @@ def get_mock_eval_resul(): sio.writelines( [ ( - '[{"模型名称": "ERNIE-Bot-turbo", "模型版本": "ERNIE-Bot-turbo-0922",' + '[{"模型名称": "ERNIE-Lite-8K", "模型版本": "ERNIE-Lite-8K",' ' "Prompt问题": "请根据下面的新闻生成摘要, 内容如下:周末采摘杨桃助农,' "游玩澄迈养生农庄自驾活动,快来报名~1月31日早上8点半出发哦," "前往澄迈杨桃园采摘,入园免费," @@ -2054,48 +2054,37 @@ def evaluable_model_list(): "log_id": "2347238209", "result": [ { - "modelId": 8, - "modelIdStr": "am-ay2k0r83q9qr", - "modelName": "ERNIE-Bot-turbo", + "modelId": 2, + "modelIdStr": "am-ju3hi4ts39u9", + "modelName": "ERNIE Lite", "source": "PlatformPreset", "modelType": 0, - "trainType": "ernieBotLite", + "trainType": "", "modelVersionList": [ { - "modelVersionId": 600, - "modelVersionIdStr": "amv-nsjesf9kasjt", - "version": "ERNIE-Bot-turbo-0922", + "modelVersionId": 26382, + "modelVersionIdStr": "amv-k8npfy0yz90r", + "version": "ERNIE-Lite-128K-0419", "sourceType": "PlatformPreset", "framework": "paddle", - "algorithm": "ERNIE_EB-ERNIEBOT_V202_FUSE", - "modelNet": "paddlepaddle-ERNIE_EB-ERNIEBOT_V202_LORA_FUSE", - "trainType": "ernieBotLite", - "description": "通过数据和策略迭代,提升模型生成效果。", + "algorithm": "ERNIE_EB-ERNIEBOT_LITE_128K", + "modelNet": "paddlepaddle-ERNIE_EB-ERNIEBOT_LITE_128K", + "trainType": "", + "description": "2024年4月19日发布版本,优化模型效果,支持128K上下文长度", }, { - "modelVersionId": 492, - "modelVersionIdStr": "amv-4u0rw8juur1p", - "version": "ERNIE-Bot-turbo-0725", + "modelVersionId": 19879, + "modelVersionIdStr": "amv-irrrsmxabb6r", + "version": "ERNIE-Lite-8K-0308", "sourceType": "PlatformPreset", "framework": "paddle", - "algorithm": "ERNIE_EB-ERNIEBOT_V201_8K", - "modelNet": "paddlepaddle-ERNIE_EB-ERNIEBOT_V201_8K", - "trainType": "ernieBotLite", + "algorithm": "ERNIE_EB-ERNIEBOT_LITE_8K", + "modelNet": "paddlepaddle-ERNIE_EB-ERNIEBOT_LITE_8K", + "trainType": "ernieBotLite-8k", "description": ( - "支持7K输入+1K输出,支持系统设置,新增推理参数" + "2024年3月8日发布版本,优化模型效果,支持8K上下文长度" ), }, - { - "modelVersionId": 244, - "modelVersionIdStr": "amv-70ahikpspjqs", - "version": "ERNIE-Bot-turbo-0704", - "sourceType": "PlatformPreset", - "framework": "paddle", - "algorithm": "ERNIE_EB-ERNIEBOT_V200", - "modelNet": "paddlepaddle-ERNIE_EB-ERNIEBOT_V200", - "trainType": "ernieBotLite", - "description": "优化推理效果,修复部分问题", - }, ], }, { @@ -3335,7 +3324,7 @@ def get_dataset_aug_task_list(): "failReason": "对象存储访问异常", "isSelfInstruct": True, "name": "3334", - "modelName": "ERNIE-Bot", + "modelName": "ERNIE-3.5-8K", }, { "id": 240, @@ -3353,7 +3342,7 @@ def get_dataset_aug_task_list(): "failReason": "", "isSelfInstruct": True, "name": "357", - "modelName": "ERNIE-Bot", + "modelName": "ERNIE-3.5-8K", }, ], }, diff --git a/python/qianfan/trainer/actions.py b/python/qianfan/trainer/actions.py index ef5acd34..2d93af4c 100644 --- a/python/qianfan/trainer/actions.py +++ b/python/qianfan/trainer/actions.py @@ -454,11 +454,9 @@ def __init__( train mode, e.g. `SFT`, `PostPretrain`, `DPO`. Defaults to None. train_type (Optional[str], optional): train_type, must be specified when it's not increment training - like 'ERNIE-Bot-turbo-0725' + like 'ERNIE-Speed-8K' train_config (Optional[TrainConfig], optional): train_config, e.g. `epoch=10, batch_size=32`. - base_model (Optional[str], optional): - base_mode, like 'ERNIE-Bot-turbo'. Defaults to None. task_id (Optional[int], optional): used in incr train, model train task_id. Defaults to None. job_id (Optional[int], optional): diff --git a/python/qianfan/trainer/post_pretrain.py b/python/qianfan/trainer/post_pretrain.py index 090eef68..515dd5c4 100644 --- a/python/qianfan/trainer/post_pretrain.py +++ b/python/qianfan/trainer/post_pretrain.py @@ -82,7 +82,7 @@ def __init__( ``` ds = Dataset.load(qianfan_dataset_id="", ...) sft_task = PostPreTrain( - train_type="ERNIE-Bot-turbo-0725", + train_type="ERNIE-Speed-8K", dataset=ds, train_config=TrainConfig(...), event_handler=eh,