当 DeepSeek-R1 横空出世,以开源姿态挑战 OpenAI 的 o1 模型时,整个 AI 社区都在关注一个问题:他们是如何做到的?答案的关键之一就是 GRPO (Group Relative Policy Optimization) —— 一种更高效的强化学习算法。
本文将带你从零开始理解 GRPO,看看它如何在保持性能的同时,将训练成本降低了近 50%。
当我们与 ChatGPT、Claude 等大语言模型对话时,可能会注意到它们的回答既流畅又富有变化。这背后的关键机制就是采样策略。本文将深入浅出地介绍大模型如何生成文本,以及 Temperature、Top-p、Top-k 这三个关键参数如何影响输出结果。
大语言模型的文本生成是一个逐个 token 生成的过程(token 可以简单理解为词或字)。就像我们写作时一个字一个字地思考和书写,模型也是根据前面已经生成的内容,预测下一个最合适的 token。
本教程将教你如何在 Windows PowerShell 中配置自动激活 Python 虚拟环境。每次打开 PowerShell 时,指定的 Python 环境会自动激活,无需手动执行激活命令。
本教程适用于:
uv 创建的 Python 环境venv 创建的 Python 环境virtualenv 创建的 Python 环境conda 创建的 Python 环境https://www.dong-blog.fun/post/360#Docker
之前没打镜像,后悔!搞了半天,记录下来。
这里有Dockerfile:
bash展开代码FROM registry.us-west-1.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.1
RUN apt-get update && apt-get install -y libjemalloc-dev && rm -rf /var/lib/apt/lists/*
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME
RUN chmod 777 $HOME
RUN mkdir $HOME/modelscope_cache
ENV MODELSCOPE_CACHE=$HOME/modelscope_cache
ENV GRADIO_SERVER_NAME=0.0.0.0
EXPOSE 7860
RUN echo 'cloning facechain:hf_space_fact'
RUN git clone -b feat/hf_space_fact https://github.com/modelscope/facechain.git
WORKDIR $HOME/facechain
RUN pip install -r requirements.txt
ENV LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so
ENV PYTHONPATH=.
CMD ["python", "app.py"]
不以root运行。进去后还需要适配一些代码。
启动
bash展开代码docker run -it --net host --gpus all kevinchina/deeplearning:fact_face_swapev1 /bin/bash
cd facechain
$ GRADIO_SERVER_PORT=9872 python3 app.py
创建key后调用:
python展开代码import requests
# 设置你的 OpenRouter API 密钥
api_key = "sk-or-v1-44855ead77789aba720551ad07a8f7434b935104ef0248cedd6d20f527e5dc"
# OpenRouter API 端点
url = "https://openrouter.ai/api/v1/chat/completions"
# 请求头
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
# 请求体
data = {
"model": "openai/gpt-oss-120b", # 指定要使用的模型
"messages": [
{"role": "user", "content": "你好!请介绍一下你自己。"}
],
"temperature": 0.7
}
# 发送 POST 请求
response = requests.post(url, headers=headers, json=data)
# 检查响应
if response.status_code == 200:
result = response.json()
print(result["choices"][0]["message"]["content"])
else:
print(f"请求失败,状态码: {response.status_code}")
print(response.text)