一键服务化:从魔搭开源模型到OpenAI API服务
过去一年多的时间,大模型在技术路线上一路狂奔,整个AI的应用生态也因此被深刻重塑。结果就是,模型的种类和数量越来越多,开发者面对的选择也变得五花八门。但在这种多样性的背后,有一个趋势非常明显——OpenAI的API接口,凭借其先发优势,已经成了业界默认的事实标准。很多开源工具和框架,比如LlamaIndex、LangChain这些,都已经内置了对OpenAI API的标准对接方式。这意味着,只要接口统一,开发者就能直接复用已有的丰富教程、示例代码和最佳实践,无论是闭源模型还是开源模型,都能真正实现从demo到落地的跨越。

对于AI应用开发来说,相比直接在本地加载模型跑推理,把模型包装成API服务显然是更轻量、也更容易扩展的办法。开源模型从原始的checkpoint(模型权重文件)变成真正的模型服务,再通过大家已经非常熟悉的OpenAI API供人调用——这无疑是加速模型能力落地的最佳路径。所以呢,我们魔搭社区想做一件事:让平台上开源的、各种各样的模型,都能被快速地服务化,然后用OpenAI API的接口开放出来,去激发更多开发者的创造力。这也是我们在ModelScope推出“一键部署OpenAI API兼容模型服务”这个功能的初衷。
01 SwingDeploy
SwingDeploy是魔搭社区推出的一键模型部署服务。它能支持把魔搭上各种领域的模型(语音、视频、NLP等等)直接部署到用户指定的云资源上,部署完后通过ModelScope pipeline就能用通用的API来调用。不过,考虑到大语言模型这个领域比较特殊——OpenAI API的接口实在太好用了,同时这种模型领域里的高效推理框架(比如Ollama+llama.cpp、vLLM、LMDeploy、SGLang这些)也发展得非常快,所以我们这期专门针对LLM,推出了一个能提供OpenAI API兼容接口的模型服务部署能力。在这些框架里,Ollama基于llama.cpp,对CPU在内的多种硬件都支持得很好,自然也就成了这个功能首选的推理框架。
02 Ollama推理框架
Ollama是基于开源的llama.cpp项目开发的模型推理工具。得益于llama.cpp本身的高效推理和多硬件适配能力,Ollama能让开发者通过简单的命令行操作,在各种各样的硬件环境上快速拉起大模型服务。更重要的是,作为一个开源项目,Ollama保持了跟llama.cpp的兼容性:除了官方提供的大模型之外,开发者也可以导入自己指定的GGUF格式模型文件,并通过Modelfile配置文件来自定义推理参数。同时,Ollama本身就提供了OpenAI API兼容的接口,这也给模型的使用带来了极大的便利。
03 从模型到OpenAI API:上手实操
SwingDeploy提供的具体能力,就是把ModelScope上的开源模型部署到云端,并最终对外提供OpenAI API接口。咱们来走一遍实操流程。
前置工作:
https://www.modelscope.cn/my/modelService/deploy。如果是第一次用SwingDeploy,需要先配置一下ModelScope账号和阿里云账号的绑定,然后开通FC(函数计算)服务的授权。有两点值得提一下:一是开通服务和授权都是免费的,二是绑定阿里云账号之后,在ModelScope Notebook上还能薅到100小时的GPU免费算力。
按照页面的提示一步步操作就行。绑定授权完成后,界面会显示“已绑定”。
一键部署:
在这里可以看到,除了“原生部署”链路,新增了一个“OpenAI API兼容部署”页面。目前这个页面首选的推理框架是Ollama。在这个页面里,可以选择想要部署的模型。我们用Qwen2-7B-Instruct这个模型来举例,点击“一键部署”就会跳转到函数计算FC的部署页面,再点“创建应用”就开始部署了。
根据所选模型的大小,部署过程需要几分钟到十几分钟不等,耐心等一下就好。
部署完成后,就能直接通过OpenAI API来调用这个Qwen2-7B模型了。从“立即使用”的入口,可以获取到调用示例代码。
这里要特别说明一下:这个部署是您自己的专属部署,鉴权信息就是模型服务地址(base_url),不需要填入特殊的API Key。把示例代码复制下来执行,就能直接调用模型服务。
from openai import OpenAI
model_id = 'qwen/Qwen2-7B-Instruct-GGUF'
client = OpenAI(
base_url='https://ms-fc-dapp-func-.cn-hangzhou.fcapp.run/v1',
api_key='ollama'
)
response = client.chat.completions.create(
model=model_id,
messages=[{"role":"user", "content":"Hello! 你是谁?"}],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content, end='')
输出结果如下:
你好!我是阿里云开发的一款超大规模语言模型,我叫通义千问。作为一个AI助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我可以回答各种问题、提供代码实现、辅助学习、解答疑惑等。请随时向我提问,我会尽力提供最好的帮助。
到这里,通过几个简单的步骤,一个Qwen2-7B模型的OpenAI接口兼容API服务就搭好了。现在,你可以直接用OpenAI的SDK或者API,把它接入到大量与OpenAI兼容的现有工具链里了。
刚才的部署全程使用了默认配置——实际上是在一台CPU机器上部署了Qwen2的70亿参数模型的GGUF量化版本(Q5_K_M)。接下来,我们再聊聊这个链路里有哪些参数可以自己配置。
04 自定义部署硬件与模型API参数
除了默认参数,SwingDeploy也支持开发者在部署时自定义一些关键参数。展开“高级配置”,就能看到可用的额外选项。
我们逐一说明一下:
模型版本号:
模型文件:
Modelfile配置:
举个例子,我们把模型部署时使用的SYSTEM prompt改成这样:
You are a lovely cat, you answer each question ending with "meow~"(喵~)
这里我们用的是Gemma2模型,通过修改SYSTEM prompt让它扮演一只小猫,每个回答都在结尾加一句“meow~”。模型部署后再调用,可以看到它果然表现出了预期的行为。当然,有些参数(比如temperature、top_p、top_k这些)也可以在每次调用时临时修改。
部署类型:
目前SwingDeploy是基于阿里云函数计算(FC)的Serverless服务,模型的部署成本主要跟API调用的时长挂钩。特别是CPU部署,成本相当可控。具体细节可以参考FC的产品页面。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名