实战揭秘|魔搭社区 + 阿里云边缘云 ENS,快速部署大模型的落地实践

简介: 大模型部署流程、配置及效果验证全归纳

vcg_VCG211101632205_RF.jpg

一种高效、便捷的部署方式。

随着大模型技术的快速发展,业界的关注点正逐步从模型训练往模型推理转变。这一转变不仅反映了大模型在实际业务中的广泛应用需求,也体现了技术优化和工程化落地的趋势

魔搭社区(ModelScope)作为开源大模型的聚集地结合阿里云边缘云ENS,提供了一种高效、便捷的部署方式。通过按需付费弹性伸缩,开发者可以快速部署和使用大模型,享受云计算的便利。本文介绍了魔搭社区与阿里云边缘云ENS的结合使用体验,包括部署流程、环境配置、效果验证等内容。

魔搭社区(ModelScope)是中国规模和影响力最大的开源模型社区 。致力于构建模型即服务(MaaS)生态,提供从模型探索、体验、训练、推理到部署的一站式服务。该平台汇聚了超过5万个AI模型,涵盖自然语言处理、计算机视觉、语音、多模态、科学计算等领域,服务超过1400万开发者。

阿里云边缘云ENS是由大规模地域分散的边缘节点相互协同组成的一朵可远程管控,安全可信,标准易用的分布式云以广覆盖为核心定位,为客户提供低时延、本地化、小型化三大核心价值。全球拥有超过3200个边缘节点,中国内地省份与运营商100%覆盖,海外覆盖70+重点国家和地区






如何新建部署入口







进入魔搭社区 - 模型服务 - 部署服务(SwingDeploy) - 免费部署到魔搭推理API - 新建部署。


1.png

魔搭社区新建部署界面







模型选择和服务部署配置







01 模型选择


社区提供了热门模型的优先推荐列表,也支持通过搜索功能为您查找特定模型。下面我们以 Qwen3-8B-GGUF 为例进行介绍,其可以运行在免费 GPU 资源上。


2.png




02 服务部署配置


基础配置


针对该模型,我们选择 Ollama 作为推理框架,并在免费部署资源中选用边缘节点服务(ENS)进行部署。对于其他模型,您可以根据需求灵活选择推理框架、以及 CPU 部署或 GPU 部署。


3.png

SwingDeploy 基础配置设置


单账号配额:支持10个免费 CPU 服务实例、1个 GPU 服务实例。

当资源不够时,服务创建会报错,并且服务状态为资源不足。

当前免费算力供应紧张,正在安排扩容,请保持关注。


高级配置


  • 支持在列表中更换模型文件,以选择特定的量化版本。
  • SwingDeploy 提供默认的 Modelfile 配置文件,同时也支持用户自定义编辑。
  • 如有需要,可自定义配置环境变量。


4.png

SwingDeploy 高级配置设置


完成上述操作后,点击右下角“一键部署”按钮,即可开始部署服务

模型部署需要一定耗时,包括模型下载、制作、资源生产和部署,请您耐心等待。可以在 SwingDeploy 控制台确认服务状态


5.png

SwingDeploy 控制台







效果验证







在部署任务列表中,点击具体任务操作列下的“详情”按钮,即可查看任务详情。详情页展示服务实例的创建时间、更新时间、实例类型、模型文件、推理框架、部署资源及参数等信息,并提供一份示例代码支持通过 OpenAPI SDK 进行调用

以下代码基于示例代码改造,实现了一个简易的终端问答Bot,用于测试模型效果。我们优化了终端的输入输出交互体验。如需运行此代码,请根据您在魔搭部署任务详情页中的配置信息,替换服务地址、API Key 以及模型路径。


from openai import OpenAI
import sys
from prompt_toolkit import PromptSession
from prompt_toolkit.styles import Style
import time
import tiktoken
import shutil

# 初始化 OpenAI 客户端,base_url,api_key,model请按实际情况填写。
client = OpenAI(
    base_url=<填写魔搭侧的服务地址>,
    api_key=<填写魔搭侧的服务api_key>
)

model = <填写模型路径,如unsloth/Qwen3-8B-GGUF>

def num_tokens_from_string(string: str) -> int:
    """计算文本中的 tokens 数量"""
    encoding = tiktoken.get_encoding("cl100k_base")
    num_tokens = len(encoding.encode(string))
    return num_tokens

def get_terminal_size():
    """获取终端大小"""
    return shutil.get_terminal_size()

def clear_current_line():
    """清除当前行"""
    terminal_width = get_terminal_size().columns
    print('\r' + ' ' * terminal_width + '\r', end='', flush=True)

def chat_with_model():
    # 创建 prompt session 和自定义样式
    session = PromptSession()
    style = Style.from_dict({
        'prompt': '#00aa00 bold',
    })
    
    messages = [
        {
            'role': 'system',
            'content': '你是一个有帮助的助手。'
        }
    ]
    
    print("欢迎使用AI助手!输入'退出'或'quit'可以结束对话。")
    
    while True:
        try:
            # 使用 prompt_toolkit 处理输入
            user_input = session.prompt('\n你: ', style=style)
            
            if user_input.lower() in ['退出', 'quit']:
                print("再见!")
                break
                
            messages.append({
                'role': 'user',
                'content': user_input
            })
            
            print("\nAI助手: ", end='', flush=True)
            try:
                start_time = time.time()
                response = client.chat.completions.create(
                    model=model,
                    messages=messages,
                    stream=True
                )
                
                full_response = ""
                for chunk in response:
                    if chunk.choices[0].delta.content:
                        content = chunk.choices[0].delta.content
                        print(content, end='', flush=True)
                        full_response += content
                
                end_time = time.time()
                elapsed_time = end_time - start_time
                
                # 计算 tokens
                response_tokens = num_tokens_from_string(full_response)
                tokens_per_second = response_tokens / elapsed_time
                
                # 确保统计信息显示在新行,并在显示后额外添加换行
                print("\n")  # 先确保有一个空行
                stats = f"[统计] 响应tokens: {response_tokens}, 用时: {elapsed_time:.2f}秒, 速率: {tokens_per_second:.2f} tokens/s"
                print(stats)
                print()  # 添加额外的换行确保滚动
                sys.stdout.flush()  # 强制刷新输出缓冲区
                
                messages.append({
                    'role': 'assistant',
                    'content': full_response
                })
                
            except Exception as api_error:
                print(f"\n请求API时发生错误: {str(api_error)}")
                print()  # 额外的换行
                continue
            
        except KeyboardInterrupt:
            print("\n\n检测到中断,正在退出...")
            print()  # 额外的换行
            break
        except Exception as e:
            print(f"\n发生错误: {str(e)}")
            print()  # 额外的换行
            continue

if __name__ == "__main__":
    try:
        chat_with_model()
    except Exception as e:
        print(f"程序发生错误: {str(e)}")
        print()  # 额外的换行
        sys.exit(1)


服务运行后,效果展示如下:


6.png

服务运行后,效果展示

服务运行后,效果视频展示



通过本文的介绍,我们展示了如何利用魔搭社区(ModelScope)与阿里云边缘云ENS相结合,快速部署和验证大模型的实际效果。

未来,随着大模型技术的不断演进和应用场景的持续拓展,我们相信这种“模型即服务”(MaaS)的模式将为更多企业和开发者带来创新机遇

希望本文能为您提供有价值的参考,也期待您在实际项目中探索出更多可能性。

让我们一起拥抱大模型时代,共同推动技术落地与业务升级!

相关文章
|
27天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
1230 2
|
30天前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
2月前
|
人工智能 自然语言处理 搜索推荐
携多项成果亮相云栖大会,探索大模型在云通信中的创新应用与全球实践
2025云栖大会云通信分论坛聚焦大模型与云通信融合,阿里云发布智能联络中心2.0与Chat App AI助理,携手伙伴推动通信智能化升级。
238 1
|
2月前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
284 101
|
27天前
|
机器学习/深度学习 缓存 自然语言处理
【万字长文】大模型训练推理和性能优化算法总结和实践
我们是阿里云公共云 AI 汽车行业大模型技术团队,致力于通过专业的全栈 AI 技术推动 AI 的落地应用。
912 38
【万字长文】大模型训练推理和性能优化算法总结和实践
|
17天前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
220 18
|
24天前
|
存储 监控 算法
1688 图片搜索逆向实战:CLIP 多模态融合与特征向量落地方案
本文分享基于CLIP模型与逆向工程实现1688图片搜同款的实战方案。通过抓包分析破解接口签名,结合CLIP多模态特征提取与Faiss向量检索,提升搜索准确率至91%,单次响应低于80ms,日均选品效率提升4倍,全程合规可复现。
|
2月前
|
机器学习/深度学习 算法 数据可视化
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
推理型大语言模型兴起,通过先思考再作答提升性能。本文介绍GRPO等强化学习算法,详解其原理并动手用Qwen2.5-3B训练推理模型,展示训练前后效果对比,揭示思维链生成的实现路径。
321 2
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
|
2月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
360 12

热门文章

最新文章