Instructions to use deepseek-ai/DeepSeek-V4-Pro with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use deepseek-ai/DeepSeek-V4-Pro with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="deepseek-ai/DeepSeek-V4-Pro") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-V4-Pro") model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-V4-Pro") - Inference
- HuggingChat
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use deepseek-ai/DeepSeek-V4-Pro with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "deepseek-ai/DeepSeek-V4-Pro" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deepseek-ai/DeepSeek-V4-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/deepseek-ai/DeepSeek-V4-Pro
- SGLang
How to use deepseek-ai/DeepSeek-V4-Pro with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "deepseek-ai/DeepSeek-V4-Pro" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deepseek-ai/DeepSeek-V4-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "deepseek-ai/DeepSeek-V4-Pro" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deepseek-ai/DeepSeek-V4-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use deepseek-ai/DeepSeek-V4-Pro with Docker Model Runner:
docker model run hf.co/deepseek-ai/DeepSeek-V4-Pro
将部份逻辑处理任务释放到 LLM 之外(计算外置)
在下一直有一个想法,但毕竟不是 LLM 设计行业的人,也没什么机会来实践自己的想法,就作为一个可能的引子,在此侃侃而谈几句。
当 GPT 之类的模型还在为数学计算的准确性挣扎的时候我就在想,为什么不把计算任务外置,那时我的想法是这样的简单设计:
当模型需要计算某个表达式时,它输出某个特殊的标记比如 <resolve>(PI * 4) ^ 3</resolve>,然后推理引擎在截获到这种模式时,通过外部计算得到结果并将结果直接附加到下几个 Token,最终形成诸如 <resolve>(PI * 4) ^ 3</resolve><result>≈ 1984.401 708</result> 的标记序列,其中 result 部分不是通过推理而是直接计算出来的,而发送给客户端的实际序列是 (PI * 4) ^ 3 ≈ 1984.401 708。
通过这种方式并联合强化训练,LLM 可以以高置信度相信外部计算得出的结果,从而在进行此类确定性计算时更自信、准确。
这是我当年的想法,之后 2 年,我看到这种方向并没有出现在主流讨论中,但这个想法一直在我心头萦绕不去,同时慢慢膨胀,因为我觉得这种模式可以扩展到很多方面,比如:
- 记忆搜索:考虑到 KV 缓存非常巨大,那么留出 1 MB 用于纯文本式的记忆我觉得是可行的,通过类似 grep 或更高级的知识向量的方式来进行推理时检索,或许可以提高模型在某些数据密集任务方面的表现,如大规模数据分析、代码分析(模型不需要重复调用 read 工具来确认代码,可以在自己的记忆内直接检索,且置信度比长程注意力更高)
- 前文指代:和上面的记忆搜索类似但方向不同,在之前瞥到的 DeepSeek Vision 模型的论文中,使用了「指点」图片块区域的一种方案,那么类似的标记是否可以引入到纯文本推理中?因为自然语言有其固有的模糊性,对于 LLM 来说不带标记的普通名词和带前文指代标记的名词两者的清晰度应该是不同的
- 离散问题求解:我一直都想不通为什么要让 LLM 来处理诸如国际象棋之类的高难度问题,我觉得这本质上就是在用一个没有 JIT 的脚本语言翻译器在跑一个计算密集型任务,效率极其低下,且我觉得似乎不可能有办法在纯 Transformer 架构下将这类离散问题求解的能效提高到机器码的水平,那么如果通过某种通用的求解语言将这些任务外置或许可以接近这一目标
这些在当时对我来说只是一个过于脱离现实的想法,但现在两年过去了,我们有了推理时拓展(CoT),越来越多的基准开始瞄准诸如智力游戏等高难度领域,再加上 DeepSeek 本身的论文如 Engram 的记忆外置,专家并行的专有领域外置,以及之前的 DeepSeek Vision 的论文,让我越来越觉得:或许这个方向并不是仅仅我的异想天开。
这是一个方面,总得来说,我觉得这种技术可以让 LLM 将自己不擅长的计算任务释放到外置系统(类似 Engram 的思想),从而提高速度和准确性,让 LLM 的角色从计算者变为规划者。
另一方面,以下是上述技术的延伸,但或许真的只是我的妄想了:
我一直很推崇这个说法:语言决定了一个人的思考模式。
如果概念未被对齐,那么使用不同语言的人们的思考方式一定是不一样的。
我觉得对于 LLM 来说也是如此:如果 LLM 一直使用和人类相同的语言进行思考,并和人类的语言概念和习惯完全对齐,那么它在单位 Token 下所能展现的能力必然是以人类领域的专家为天花板(注意我用的是单位 Token 下的智能这一表述,高速率生成带来的快速思考确实可以展现出某种程度上超人的智力,但和我想说的突破性的智力不同)。
所以我觉得我们不应该将自然语言视为 LLM 的目标,而仅仅只是一个载体:在这个载体之上,我们引入新的语言,针对性地增强 LLM 在特定方向上的能力,比如:
- 引入一种用于实时构建图的标记,让 LLM 在生成时按需生成一个一个节点,最终连接成图,这样 LLM 就可以利用节点之间的连通性、距离、路径等信息来实现更高的逻辑推理能力,如代码推理中可以用来将代码中散落的变量通过图连接起来,从而在重构时减少缺漏的情况,或更进一步,通过构建逻辑线路来实现圈复杂度的计量等等
- 引入一种可嵌套的用于离散求解的语言,从而可以让 LLM 不仅仅以直觉思考象棋等智力游戏,而是以一种更结构化的方式来思考(比如 MCTS 蒙特卡洛树搜索),让 LLM 自己构筑求解算法、剪枝等
这看上去或许很不现实,因为人类并不能教会 LLM 该如何用这种方式来思考,但如果有一个好的语言(我觉得过程编程语言是不行的,大概需要一种专用的语言,可以作为子句集成在自然语言之中的语言)的话,借助奖励优化等方式应该是可以让 LLM 完全自主摸索出使用这种语言的方式的,换言之,这就是一种只有 LLM 才能实现的区别于人类的思维模式。
我觉得这也有助于泛化 LLM 对编程语言和数学的能力,编程语言和数学都是明显超越自然语言的特殊语言,而当下的 LLM 必然在其参数内部生长出了某些特殊的能力,用于统一分析和处理这些语言,那么这些能力就和之前所说的用 LLM 进行国际象棋的推理一样,我觉得是臃肿的。
通过将某些高级概念通过语言建模并让 LLM 自由取用,可以帮助 LLM 将这些只能自我消化的内部能力部份外化到外部处理。