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 671B、Ollama-DeepSeek-R1-32B和Ollama-DeepSeek-R1-70B可供选择
1. 主要策略
1.1 训练策略:先短后长
此次成功的关键在于团队采用了一种名为"先短后长"的训练策略。首先,他们使用DeepSeek的GRPO方法,以8K的上下文长度对模型进行短期训练,以提高思维效率。在经过1000步的训练后,模型的token使用量减少了3倍,并且性能提升了5%。接着,团队将上下文长度扩展到16K和24K token,以解决更复杂的问题,最终使模型性能超越o1-preview。
1.2 数据集与奖励函数设计
在数据集构建方面,研究团队收集了1984至2023年的美国国际数学邀请赛(AIME)和美国数学竞赛(AMC)等数据,并通过一系列清理和过滤步骤,确保了训练数据的质量。数据处理流程包含以下核心步骤:
- 答案提取:使用gemini-1.5-pro-002模型从AoPS官方解答中提取AMC和AIME的数据集的答案。
- 重复问题清理:基于RAG结合sentence-transformers/all-MiniLM-L6-v2的词向量嵌入消除重复问题,并进行重叠检测,以防止数据污染。
- 不可评分题目过滤:剔除无法通过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模型的训练过程:
-
环境准备:
- 在 Compshare 平台中租用一台配置为 3090 或以上显存(24G)*2的显卡机器。
- 镜像选择如下:
- PyTorch: 2.0.0
- Python: 3.8 (ubuntu20.04)
- CUDA: 11.8(11.3版本以上均可)
-
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
-
模型下载 :
使用
modelscope
中的snapshot_download
函数下载模型。以下是下载模型的步骤:- 在
/root/compshare-tmp
路径下新建download.py
文件,并将以下代码粘贴进去:
pythonimport 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分钟):
shpython /root/compshare-tmp/download.py
- 在
-
代码准备 :
在
/root/compshare-tmp
路径下新建chatBot.py
文件,并将以下代码粘贴进去:pythonfrom 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)
-
运行 Demo :
在终端中运行以下命令启动
streamlit
服务,并按照compshare
的指示将端口映射到本地,然后在浏览器中打开链接http://localhost:6006/
,即可看到聊天界面。shstreamlit run /root/compshare-tmp/chatBot.py --server.address 0.0.0.0 --server.port 11434
3. 结论与未来展望
此次研究表明,强化学习不仅能提升大型模型的性能,同样也能在小型模型上发挥显著效果。通过将高质量的监督微调与强化学习相结合,UC伯克利团队成功地将DeepScaleR的推理能力提升到了新的高度。这一成果不仅为开源社区提供了重要的技术参考,也为未来的AI模型开发提供了新的思路。
随着DeepScaleR-1.5B-Preview的开源,研究团队期望更多的开发者能够利用这一模型进行创新性研究,推动人工智能技术的进一步发展。