捯饬DeepScaleR-1.5B----最有可能在嵌入端部署的思考模型

0. 简介

关于UCloud(优刻得)旗下的compshare算力共享平台

UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。

Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,支持按时、按天、按月灵活计费,支持github、huggingface访问加速。

使用下方链接注册可获得20元算力金,免费体验10小时4090云算力,此外还有3090和P40,价格每小时只需要8毛,赠送的算礼金够用一整天。
https://www.compshare.cn/?ytag=GPU_lovelyyoshino_Lcsdn_csdn_display

近日,UC伯克利的研究团队在强化学习(RL)领域取得了显著突破,他们仅用4500美元的成本成功复现了DeepSeek的技术,推出了全新的15亿参数模型------DeepScaleR-1.5B-Preview。该模型在AIME2024基准测试中表现优异,Pass@1准确率高达43.1%,不仅比基础模型提升了14.3%,还超越了OpenAI的o1-preview,震撼了业界。

目前相关镜像已经存入https://www.compshare.cn/images-detail?ImageID=compshareImage-18a3y6o5x4xr中了。此外还有Deepseek-R1 671BOllama-DeepSeek-R1-32BOllama-DeepSeek-R1-70B可供选择

1. 主要策略

1.1 训练策略:先短后长

此次成功的关键在于团队采用了一种名为"先短后长"的训练策略。首先,他们使用DeepSeek的GRPO方法,以8K的上下文长度对模型进行短期训练,以提高思维效率。在经过1000步的训练后,模型的token使用量减少了3倍,并且性能提升了5%。接着,团队将上下文长度扩展到16K和24K token,以解决更复杂的问题,最终使模型性能超越o1-preview。

1.2 数据集与奖励函数设计

在数据集构建方面,研究团队收集了1984至2023年的美国国际数学邀请赛(AIME)和美国数学竞赛(AMC)等数据,并通过一系列清理和过滤步骤,确保了训练数据的质量。数据处理流程包含以下核心步骤:

  1. 答案提取:使用gemini-1.5-pro-002模型从AoPS官方解答中提取AMC和AIME的数据集的答案。
  2. 重复问题清理:基于RAG结合sentence-transformers/all-MiniLM-L6-v2的词向量嵌入消除重复问题,并进行重叠检测,以防止数据污染。
  3. 不可评分题目过滤:剔除无法通过sympy数学符号计算库评估的问题,以提高训练速度和稳定性。

经过去重和过滤,最终得到约4万个独特的问题-答案对作为训练数据集。

在奖励函数的设计上,研究人员采用了结果奖励模型(ORM),通过LaTeX和Sympy的验证来评估模型的回答,以此激励模型产生更准确的结果。具体奖励函数返回值如下:

  • 返回"1":如果LLM的答案能通过LaTeX语法检查和Sympy数学验证。
  • 返回"0":如果LLM的答案是错误的或者格式不对。

1.3 计算效率与成本控制

在扩展强化学习的过程中,研究团队面临着计算成本高昂的挑战。根据DeepSeek-R1的实验,要完全复现上下文长度达到32K以上,训练约需8000步,计算成本高达70,000 GPU小时。然而,研究人员创新性地采用知识蒸馏模型,并引入强化学习迭代延长方法,成功将训练时间缩短至3800个A100 GPU小时,相当于4500美元的训练成本,节省了18.42倍的费用。

2. 训练过程详细步骤

以下是DeepScaleR模型的训练过程:

  1. 环境准备

    • Compshare 平台中租用一台配置为 3090 或以上显存(24G)*2的显卡机器。
    • 镜像选择如下:
      • PyTorch: 2.0.0
      • Python: 3.8 (ubuntu20.04)
      • CUDA: 11.8(11.3版本以上均可)
  2. pip换源和安装依赖包

    sh 复制代码
    # 升级pip
    python -m pip install --upgrade pip
    
    # 更换 pypi 源加速库的安装
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
    # 安装依赖包
    pip install modelscope==1.9.5
    pip install transformers==4.48.3
    pip install streamlit==1.24.0
    pip install sentencepiece==0.1.99
    pip install accelerate==1.3.0 
    pip install transformers_stream_generator==0.0.4
  3. 模型下载

    使用 modelscope 中的 snapshot_download 函数下载模型。以下是下载模型的步骤:

    • /root/compshare-tmp 路径下新建 download.py 文件,并将以下代码粘贴进去:
    python 复制代码
    import torch
    from modelscope import snapshot_download
    import os  # Optional for faster downloading
    os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
    model_dir = snapshot_download('agentica-org/DeepScaleR-1.5B-Preview', cache_dir='/root/compshare-tmp')
    • 保存文件,并运行以下命令执行下载(模型大小为15 GB,下载时间大约需要10~20分钟):
    sh 复制代码
    python /root/compshare-tmp/download.py
  1. 代码准备

    /root/compshare-tmp 路径下新建 chatBot.py 文件,并将以下代码粘贴进去:

    python 复制代码
    from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
    import torch
    import streamlit as st
    
    # 在侧边栏中创建一个标题和一个链接
    with st.sidebar:
        st.markdown("## DeepScaleR-1.5B LLM")
        max_length = st.slider("max_length", 0, 8196, 1024, step=1)
    
    # 创建一个标题和一个副标题
    st.title("💬 DeepScaleR-1.5B Chatbot")
    st.caption("🚀 A streamlit chatbot powered by Compshare")
    
    # 定义模型路径
    mode_name_or_path = '/root/compshare-tmp/agentica-org/DeepScaleR-1.5B-Preview'
    
    # 定义一个函数,用于获取模型和tokenizer
    @st.cache_resource
    def get_model():
        tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
        model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="auto")
        model.generation_config = GenerationConfig.from_pretrained(mode_name_or_path)
        model.eval()  
        return tokenizer, model
    
    # 加载模型
    tokenizer, model = get_model()
    
    if "messages" not in st.session_state:
        st.session_state["messages"] = [{"role": "assistant", "content": "有什么可以帮您的?"}]
    
    for msg in st.session_state.messages:
        st.chat_message(msg["role"]).write(msg["content"])
    
    if prompt := st.chat_input():
        st.session_state.messages.append({"role": "user", "content": prompt})
        st.chat_message("user").write(prompt)
        
        input_tensor = tokenizer.apply_chat_template(st.session_state.messages, add_generation_prompt=True, return_tensors="pt")
        outputs = model.generate(input_tensor.to(model.device), max_new_tokens=max_length)
        response = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)
        st.session_state.messages.append({"role": "assistant", "content": response})
        st.chat_message("assistant").write(response)
  2. 运行 Demo

    在终端中运行以下命令启动 streamlit 服务,并按照 compshare 的指示将端口映射到本地,然后在浏览器中打开链接 http://localhost:6006/,即可看到聊天界面。

    sh 复制代码
    streamlit run /root/compshare-tmp/chatBot.py --server.address 0.0.0.0 --server.port 11434

3. 结论与未来展望

此次研究表明,强化学习不仅能提升大型模型的性能,同样也能在小型模型上发挥显著效果。通过将高质量的监督微调与强化学习相结合,UC伯克利团队成功地将DeepScaleR的推理能力提升到了新的高度。这一成果不仅为开源社区提供了重要的技术参考,也为未来的AI模型开发提供了新的思路。

随着DeepScaleR-1.5B-Preview的开源,研究团队期望更多的开发者能够利用这一模型进行创新性研究,推动人工智能技术的进一步发展。

相关推荐
qq_401700411 小时前
Qt文本高亮显示QSyntaxHighlighter
开发语言·数据库·qt
MyY_DO1 小时前
泛型 类 接口 方法 通配符
linux·服务器·windows
小白学大数据2 小时前
Node.js 中实现多任务下载的并发控制策略
大数据·开发语言·爬虫·node.js
索然无味io2 小时前
Windows提权
linux·运维·服务器·windows·笔记·web安全·网络安全
EPSDA4 小时前
Linux命名管道与共享内存
linux·运维·服务器·开发语言·c++
一张假钞6 小时前
Python3操作MongoDB批量upsert
开发语言·数据库·python·mongodb
C#Thread6 小时前
C# 上位机--枚举
开发语言·c#
嘵奇6 小时前
Python练习11-20
开发语言·python
游王子7 小时前
Python Pandas(9):Pandas 相关性分析
开发语言·python·pandas