当前位置: 首页 > news >正文

自助网站建设程序谷歌应用商店app下载

自助网站建设程序,谷歌应用商店app下载,开网站赚钱吗,阿里云上做网站背景 在阅读 LLamafactory 的文档时候,发现它支持批量推理: 推理.https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/inference.html 。 于是便想测试一下,它的批量推理速度有多快。本文实现了 下述两种的大模型推理,并对…

背景

在阅读 LLamafactory 的文档时候,发现它支持批量推理:
推理.https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/inference.html 。

于是便想测试一下,它的批量推理速度有多快。本文实现了 下述两种的大模型推理,并对比了他们速度差别:

  • LLamafactory API 部署,并通过 python 异步调用;
  • LLamafactory 批量推理;

数据集构造

LLamafactory 批量推理的数据集,需要在 data/dataset_info.json 文件中完成注册。

build_dataset.ipynb:

import json
import random
from typing import Listdef generate_arithmetic_expression(num: int):# 定义操作符和数字范围,除法operators = ["+", "-", "*"]expression = (f"{random.randint(1, 100)} {random.choice(operators)} {random.randint(1, 100)}")num -= 1for _ in range(num):expression = f"{expression} {random.choice(operators)} {random.randint(1, 100)}"result = eval(expression)expression = expression.replace("*", "x")return expression, resultdef trans2llm_dataset(texts: List[str],labels: List[str],output_file,instruction="",prompt_template="",replace_kw="",
):data = []for text, label in zip(texts, labels):if replace_kw and prompt_template:text = prompt_template.replace(replace_kw, text)d = {"instruction": instruction,"input": text,"output": label,}data.append(d)with open(output_file, "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)prompt_template = """你是一名擅长数学运算的助手,负责逐步推理并解决四则运算问题。请按照以下步骤进行:1. 阅读并理解问题。2. 分步计算,逐步解决问题。3. 给出最终的结果。4. 按照 JSON 格式输出结果,包括:- reason: 详细的推理过程。- infer: 最终的计算结果。问题:{question}请给出分析和结果。""".strip()texts = []
labels = []for _ in range(100):text, label = generate_arithmetic_expression(2)texts.append(text)labels.append(label)trans2llm_dataset(texts=texts,labels=labels,output_file="calculate.json",prompt_template=prompt_template,replace_kw="{question}",
)

上述程序运行后,得到了下图所示的数据集:

在这里插入图片描述

把该数据集在dataset_info.json中使用绝对路径注册:
在这里插入图片描述

LLamafactory 批量推理

yaml 参数设置

# examples/train_lora/llama3_lora_predict.yaml
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft# deepspeed: examples/deepspeed/ds_z3_config.yaml # deepspeed配置文件### method
stage: sft
do_predict: true
finetuning_type: lora### dataset
# eval_dataset: identity,alpaca_en_demo
eval_dataset: calculate
template: qwen
cutoff_len: 1024
# max_samples: 50
overwrite_cache: true
preprocessing_num_workers: 16### output
output_dir: 模型预测结果的输出路径
overwrite_output_dir: true### eval
per_device_eval_batch_size: 1
predict_with_generate: true
ddp_timeout: 180000000

参数介绍:

  • eval_dataset: identity,alpaca_en_demo
  • max_samples: 50

eval_dataset 是待预测/评估的数据集,支持填写多个数据集;
max_samples 代表从数据集中随机采样的数量;若不填,默认是全部数据集;

批量推理启动

由于要用到数据集,为了使得LLaMA-Factory 能够找到该数据集,故要在LLaMA-Factory 项目路径下运行命令,不然就会报’data/dataset_info.json 找不到的错误:

ValueError: Cannot open data/dataset_info.json due to [Errno 2] No such file or directory: 'data/dataset_info.json'.

cd 切换到 LLaMA-Factory 项目路径下,确保当前路径有 data 文件夹:

cd xxx/.../LLaMA-Factory
nohup llamafactory-cli train /绝对路径/csdn/24/11/llamafactory_batch_infer/batch_infer.yaml

但是 llamafactory 的批量推理不支持 vllm,所以推理速度有点慢,甚至还不如异步的API调用。

100%|██████████| 100/100 [04:42<00:00, 2.82s/it]

下述批量推理完,输出的结果:

使用批量推理的会输出一些文件:
在这里插入图片描述
预测结果保存在 predict_results.json中:

{"prompt": "system\nYou are a helpful assistant.\nuser\n你是一名擅长数学运算的助手,负责逐步推理并解决四则运算问题。请按照以下步骤进行:\n\n    1. 阅读并理解问题。\n    2. 分步计算,逐步解决问题。\n    3. 给出最终的结果。\n    4. 按照 JSON 格式输出结果,包括:\n    - reason: 详细的推理过程。\n    - infer: 最终的计算结果。\n\n    问题:58 + 15 + 17\n    请给出分析和结果。\nassistant\n", "label": "90", "predict": "```json\n{\n    \"reason\": \"首先,我们需要解决加法问题58 + 15 + 17。我们可以按照从左到右的顺序逐步计算。首先,计算58 + 15,得到73。然后,将73与17相加,最终结果是90。\",\n    \"infer\": 90\n}\n```"}
{"prompt": "system\nYou are a helpful assistant.\nuser\n你是一名擅长数学运算的助手,负责逐步推理并解决四则运算问题。请按照以下步骤进行:\n\n    1. 阅读并理解问题。\n    2. 分步计算,逐步解决问题。\n    3. 给出最终的结果。\n    4. 按照 JSON 格式输出结果,包括:\n    - reason: 详细的推理过程。\n    - infer: 最终的计算结果。\n\n    问题:7 + 35 + 9\n    请给出分析和结果。\nassistant\n", "label": "51", "predict": "```json\n{\n  \"reason\": \"首先,我们从左到右依次进行加法运算。首先计算7加35,得到42。然后将42加上9,得到最终结果51。\",\n  \"infer\": 51\n}\n```"}
{"prompt": "system\nYou are a helpful assistant.\nuser\n你是一名擅长数学运算的助手,负责逐步推理并解决四则运算问题。请按照以下步骤进行:\n\n    1. 阅读并理解问题。\n    2. 分步计算,逐步解决问题。\n    3. 给出最终的结果。\n    4. 按照 JSON 格式输出结果,包括:\n    - reason: 详细的推理过程。\n    - infer: 最终的计算结果。\n\n    问题:92 - 50 + 48\n    请给出分析和结果。\nassistant\n", "label": "90", "predict": "```json\n{\n    \"reason\": \"首先,我们需要按照数学中的运算顺序规则来解决这个问题。这个问题中只包含加法和减法,没有乘除运算,所以我们按照从左到右的顺序进行计算。首先执行92减去50,得到42。然后将得到的结果42加上48,最终结果为90。\",\n    \"infer\": 90\n}\n```"}

在这里插入图片描述

LLamafactory API 部署

可以,参考我们的前一篇文章,关于 python 异步调用 API 的文章。

  • 大模型 API 异步调用优化:高效并发与令牌池设计实践
    .https://blog.csdn.net/sjxgghg/article/details/143858730
  • LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率
    .https://blog.csdn.net/sjxgghg/article/details/144049692

完成 大模型 API 的部署:

llamafactory-cli api vllm_api.yaml 

100%|██████████| 100/100 [00:14<00:00, 6.76it/s]

由于 llamafactory 的批量推理不支持 vllm ,所以导致速度很慢,100条数据推理完,总计用时4分吧42秒。

而使用 异步的 API 调用的方式,仅仅用时14秒,就完成了100条数据的推理。

结论

lamafactory 的批量推理不支持 vllm 速度很慢。还是建议 lamafactory 把大模型部署成 API 服务,使用异步的调用API更快一点。

当然最快的还是使用 vllm 批量推理,这样会麻烦一些。使用 vllm 针对大模型进行推理会有一些繁琐的配置。比如参考:llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理
.https://blog.csdn.net/sjxgghg/article/details/137993809

我个人喜欢的流程是:

  1. 使用 LLamafactory 微调模型;
  2. LLamafactory vllm api 部署模型;
  3. 使用异步调用 API。

项目开源

https://github.com/JieShenAI/csdn/tree/main/24/11/llamafactory_batch_infer

在这里插入图片描述

  • vllm_api.yaml 是 llamafactory API部署,供API异步调用的配置
  • build_dataset.ipynb 构建数据集
  • async_infer.ipynb 异步调用调试代码,因为 .ipynb 运行异步有点麻烦
  • async_infer.py 异步调用的代码
http://www.hkea.cn/news/203992/

相关文章:

  • 网站建设企业公司石家庄新闻头条新闻最新今天
  • 道滘镇做网站百度统计
  • qq空间做宣传网站怎样建立自己的网站平台
  • 做设计一般用的素材网站是什么意思刷网站排名软件
  • 帮人做兼职的网站吗青岛seo服务哪家好
  • 贷款类网站怎样做网络营销的推广
  • 乐清做网站哪家好税收大数据
  • 校园网站建设需求天津放心站内优化seo
  • 哈尔滨微网站建设热搜在哪里可以看
  • 网站用oracle做数据库福州seo推广服务
  • 康保县城乡建设委员会网站营销型网站重要特点是
  • 手机做网站的步骤跨境电商有哪些平台
  • 请人做网站要多少网络事件营销
  • 网站页脚有什么作用厦门seo哪家强
  • 东莞百度提升优化优化推广网站推荐
  • 查企业网站有哪些站长统计app软件
  • 做a高清视频在线观看网站济源新站seo关键词排名推广
  • 刚做的网站怎么搜索不出来百度seo收录软件
  • 视频拍摄app站长工具seo综合查询广告
  • 新闻单位建设网站的意义武汉seo推广优化
  • 低价网站公司软文怎么写
  • 东莞市建设公共交易中心网站百度官网首页
  • 如何建立的网站能争钱优化营商环境 助推高质量发展
  • 做百度网站营销型网站建设排名
  • 网站域名被黑国际新闻最新消息战争
  • 苏州网站开发公司济南兴田德润厉害吗网络自动推广软件
  • 广药网站建设试卷株洲最新今日头条
  • 网站建设管理考核办法微信推广平台怎么做
  • 网站新闻模块代码网络推广有哪些常见的推广方法
  • 合肥大型网站如何推广普通话