前言

有娃的伙伴就知道,每天下班最头疼的就是给娃辅导家庭作业,不写作业父慈子孝,一写作业鸡飞狗跳。请家教呢要花好几大千,着实心疼。从事AI行业的z先生,今天决定手把手给大家搭建个人免费AI数学老师,来帮助娃辅导数学作业。

之前给大家分享GOT-OCR2.0大模型,可以快速识别各类常规OCR任务。OCR模型相当于人的眼睛,而基础大模型相当于人的大脑。今天给大家阿里最新开源最强数学大模型Qwen2.5_Math系列;本文手把手教你利用GOT-OCR2.0+Qwen2.5_Math_7B大模型来打造个人免费AI数学老师来给娃辅导家庭作业。文末提供7个小初高数学案例测试效果,效果着实牛逼!下面进入今天的主题~

本文目录

  • Qwen2.5-Math大模型介绍

  • Qwen2.5-Math和Qwen2-Math的区别是什么呢?

  • Qwen2.5_Math训练流程图&&性能介绍

  • GOT-OCR2.0模型介绍

  • 实战篇: 部署GOT-OCR2.0+Qwen2.5-Math-7B大模型打造AI数学老师

  • 配置代码运行环境

  • 加载GOT-OCR2.0模型和Qwen2.5—math-7B模型

  • 封装推理接口打造个人AI数学老师

  • 案例展示:轻松拿捏小初高各类数学问题

  • 案例一: 解答高中数学题-效果展示

  • 案例二: 排列组合相关的问题-效果展示

  • 案例三: 中小学奥数题-效果展示

  • 案例四: 初中数学题-效果展示

  • 案例五: 高中集合数学题-效果展示

  • 案例六: 高中不等式计算-效果展示

  • 案例七: 复杂高中不等式计算-效果展示

  • 参考链接

Qwen2.5-Math大模型介绍

你好,Qwen2.5!;没错,阿里通义千问团队在开源基础大模型Qwen2.5系列的同时,也开源了数学大模型Qwen2.5_Math, 开源相关的版本信息如下:

  • 基础模型: Qwen2.5-Math-1.5B/7B/72B

  • 指令微调模型: Qwen2.5-Math-1.5B/7B/72B-Instruct

  • 数学奖励模型: Qwen2.5-Math-RM-72B。

Qwen2.5-Math和Qwen2-Math的区别是什么呢?

相较于 Qwen2-Math 只支持使用思维链(CoT)解答英文数学题目, Qwen2.5 系列扩展为同时支持使用思维链(CoT)和工具集成推理(TIR) 解决中英双语的数学题。Qwen2.5-Math系列相比上一代Qwen2.5-Math在中文和英文的数学解题能力上均实现了显著提升。看上面图可知道,Qwen2.5_Math-7B-Instruct模型在Math数据集上取得性能是83.6 比Qwen2_Math-7B-Instruct提高了整整8.5个点,只是轻微低于Qwen2_Math-72B-Instruct。

虽然 CoT 在增强 LLM 的推理能力方面发挥着重要作用,但它在实现计算精度和处理复杂的数学或算法推理任务方面依然面临挑战,例如寻找二次方程的根或计算矩阵的特征值等等。而 TIR(如使用python解释器)可以进一步提高模型在精确计算、符号操作和算法操作方面的能力。Qwen2.5-Math-1.5B/7B/72B-Instruct 使用 TIR 在 MATH 基准测试中分别达到 79.7、85.3 和 87.8的高分。

Qwen2.5_Math训练流程图&&性能介绍

Qwen2-Math 和 Qwen2.5-Math 的整体训练流程如上图所示。在训练完 Qwen2-Math 基础模型后,主要是通过三个主要途径将其进一步升级为 Qwen2.5-Math 模型:

  • 利用 Qwen2-Math-72B-Instruct 模型合成更多高质量的数学预训练数据。

  • 通过多轮召回从网络资源、书籍和代码中获取更多高质量的数学数据,尤其是中文数学数据。

  • 利用 Qwen2.5 系列基础模型进行参数初始化,它们相比Qwen2有更强大的语言理解、代码生成和文本推理能力。

最终,Qwen2.5-Math-1.5B/7B/72B 构建了名为 Qwen Math Corpus v2 的预训练数据集,并保持上下文长度为4K。与用于 Qwen2-Math 预训练的 Qwen Math Corpus v1 相比,Qwen Math Corpus v2 的总 token 数量从 700B 增加到超过 1T。

GOT-OCR2.0模型介绍

中科大研究学者最近提出了一种新的光学字符识别(OCR)理论——General OCR Theory(名为GOT的先进OCR模型),旨在推动OCR技术进入2.0时代。GOT模型具有以下特点:

  1. 参数规模:拥有580M参数。

  2. 模型结构:由高压缩编码器和长上下文解码器组成,实现端到端的处理。

  3. 统一性:能够处理包括文本、公式、表格、图表、乐谱和几何形状在内的各种人造光学信号。

  4. 输入支持:兼容多种场景和文档风格的图像,包括切片和整页样式。

  5. 输出灵活性:能够生成纯文本或格式化结果。支持具有更强可读性的输出格式,例如公式和表格的LATEX/Markdown格式。

  6. 交互性:具备区域级识别功能,可通过坐标或颜色进行引导。

  7. 技术适配:整合了动态分辨率和多页OCR技术,增强了模型的实用性。

  8. 实验验证:通过实验结果证明了GOT模型的优越性能。

GOT-OCR2.0相当于人的眼睛 + Qwen2.5-Math相当于人的大脑,如果利用他们两个来打造免费的AI数学老师,是不是会很有趣,先说效果Qwen2_MATH果然牛逼,7B的大模型就已经让我觉得很赞。下面我给大家实操一下~

实战篇: 部署GOT-OCR2.0+Qwen2.5-Math-7B大模型打造AI数学老师

今天我将用GOT-OCR2.0作为鹰眼来识别图片内的信息;送给Qwen2.5-Math-7B大模型来帮助我们解答对应的数学问题。下面开启我们的实战之旅~

配置代码运行环境

from IPython.display import clear_output   !pip install tiktoken==0.7.0   !pip install verovio==4.3.1   import numpy as np   import pandas as pd   import transformers   import accelerate   import torchvision   print("accelerate: ", accelerate.__version__) # accelerate:  0.33.0   print("torch: ", torch.__version__) # torch:  2.4.0   print("numpy: ", np.__version__) # numpy:  1.26.4   print("transformers: ", transformers.__version__) # transformers:  4.44.0   

加载GOT-OCR2.0模型和Qwen2.5—math-7B模型

这是加载GOT-OCR2.0模型和Qwen2.5-math-7B模型的代码,其中Qwen2.5-math-7B模型采用nf4量化加载,GOT-OCR2.0模型采用float32加载。累计显存占用8.3G左右;

from transformers import AutoModel, AutoTokenizer   from transformers import AutoModelForCausalLM, AutoTokenizer,BitsAndBytesConfig,Qwen2ForCausalLM   ocr_tokenizer = AutoTokenizer.from_pretrained('ucaslcl/GOT-OCR2_0', trust_remote_code=True)   ocr_model = AutoModel.from_pretrained('ucaslcl/GOT-OCR2_0',                                      trust_remote_code=True,                                      low_cpu_mem_usage=True,                                     device_map='cuda',                                      use_safetensors=True,                                      pad_token_id=ocr_tokenizer.eos_token_id)   ocr_model = ocr_model.eval().cuda()      model_name = "Qwen/Qwen2.5-Math-7B-Instruct"   device = "cuda"    bnb_config=BitsAndBytesConfig(               load_in_4bit=True,               bnb_4bit_compute_dtype=torch.float16,               bnb_4bit_use_double_quant=True, #QLoRA 设计的 Double Quantization               bnb_4bit_quant_type="nf4", #QLoRA 设计的 Normal Float 4 量化数据类型               llm_int8_threshold=6.0,               llm_int8_has_fp16_weight=False,           )      model = Qwen2ForCausalLM.from_pretrained(           model_name,           quantization_config=bnb_config,           torch_dtype=torch.float16,           low_cpu_mem_usage=True).eval()   tokenizer = AutoTokenizer.from_pretrained(model_name)   model   

其中qwen2.5_math_7B的网络模型结构如下:可以看出跟Qwen2_7B网络模型、Qwen2.5_7B的网络模型一摸一样。

封装推理接口打造个人AI数学老师

我们将图片和文本信息封装成统一的函数,这样只需要传入对应的参数就能运行我们想要的结果。

def got_ocr20_qwen25_math_7b_infer(image_file, user_input, m_type='cot'):       if image_file:           res = ocr_model.chat(ocr_tokenizer, image_file, ocr_type='format')           print("##########################################################")           print("got_ocr20识别的结果:\n")           display(Latex(res))           print("##########################################################")       else:           res=''       query = user_input + """           {}          """.format(res)       if m_type=='cot':           messages = [               {"role": "system", "content": "你是一个数学专家。请一步一步输出对应的结果。"},               {"role": "user", "content": query}           ]          else:           messages = [               {"role": "system", "content": "请将自然语言推理与程序结合起来解决上述问题,并将你的最终答案放在 \\boxed{} 中。"},               {"role": "user", "content": query}           ]          text = tokenizer.apply_chat_template(           messages,           tokenize=False,           add_generation_prompt=True       )       model_inputs = tokenizer([text], return_tensors="pt").to(device)          generated_ids = model.generate(           **model_inputs,           max_new_tokens=4096       )       generated_ids = [           output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)       ]       response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]       response = response.replace("\\(","$(").replace("\\)",")$").replace("\\[","$[").replace("\\]","]$")       return response   

下面开始我的AI数学老师给娃解答数学作业之旅了~

案例展示:轻松拿捏小初高各类数学问题

案例一: 解答高中数学题-效果展示

%%time    image_file = '2b2db60b-06df-4f94-928e-e0139d9328c4.png'   clean_memory()   res = got_ocr20_qwen25_math_7b_infer(image_file,"计算下面方程组中x的解")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:怎么样,这过程详细不,回答非常准确,当娃的老师是不是非常合适。

案例二: 排列组合相关的问题-效果展示

问题: 在前1000个自然数中,既不是平方数也不是立方数的自然数有多少个?

%%time   clean_memory()   res = got_ocr20_qwen25_math_7b_infer(None,"在前1000个自然数中,既不是平方数也不是立方数的自然数有多少个?")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:

这是使用TIR模式下我的AI数学老师回答的结果:牛逼牛逼,2种模式下,实现的结果都是正确的。

案例三: 中小学奥数题-效果展示

问题: 已知15120=24×33×5×7,问:15120共有多少个不同的约数?

%%time   clean_memory()   res = got_ocr20_qwen25_math_7b_infer(None,"已知15120=2^4×3^3×5×7,问:15120共有多少个不同的约数?")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:过程很详细,回答正确。

案例四: 初中数学题-效果展示

%%time   clean_memory()   res = got_ocr20_qwen25_math_7b_infer("2_1.png","解答下面的问题")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:卧槽,照样正确。

案例五: 高中集合数学题-效果展示

现有集合相关的数学题如下:AI数学老师回答的结果:这块回答正确,但是输出的变成了英文,估计推测原始语料中集合相关的数学问题英文较多~

案例六: 高中不等式计算-效果展示

%%time   clean_memory()   res = got_ocr20_qwen25_math_7b_infer("3_1.png","解答下面的问题")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:回答正确,但是用了更高深的数学定理来解答通用性强,但是可能不适合高中课程内的知识~

案例七: 复杂高中不等式计算-效果展示

%%time   clean_memory()   res = got_ocr20_qwen25_math_7b_infer("3_2.png","解答下面的问题")   display(Markdown(res))   clean_memory()   

AI数学老师回答的结果:

依然回答正确。佩服佩服,这种复杂的不等式依然轻松拿捏~

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐