宁都县建设局网站公司注册网站需要提供什么文件
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:16
当前位置: 首页 > news >正文
宁都县建设局网站,公司注册网站需要提供什么文件,西安是哪个省,wordpress 并发量一、Why MindSpore Serving
大模型时代#xff0c;作为一个开发人员更多的是关注一个大模型如何训练好、如何调整模型参数、如何才能得到一个更高的模型精度。而作为一个整体项目#xff0c;只有项目落地才能有其真正的价值。那么如何才能够使得大模型实现落地#xff1f;如…一、Why MindSpore Serving
大模型时代作为一个开发人员更多的是关注一个大模型如何训练好、如何调整模型参数、如何才能得到一个更高的模型精度。而作为一个整体项目只有项目落地才能有其真正的价值。那么如何才能够使得大模型实现落地如何才能使大模型项目中的文件以app的形式呈现给用户
解决这个问题的一个组件就是Serving服务它主要解决的问题有
模型如何提交给服务服务如何部署服务如何呈现给用户如何应用各种复杂场景等待
MindSpore Serving就是为了实现将大模型部署到生产环境而产生的。
MindSpore Serving是一个轻量级、高性能的服务模块旨在帮助MindSpore开发者在生产环境中高效部署在线推理服务。当用户使用MindSpore完成模型训练后导出MindIR即可使用MindSpore Serving创建该大模型的推理服务。
MindSpore Serving实现的是一个模型服务化的部署也就是说模型以线上的形式部署在服务器和云上客户通过浏览器或者客户端去访问这个服务将需要进行推理的输入内容发送给服务器然后服务器将推理的结果返回给用户。
二、Component
MindSpore Serving由三部分组成分别是客户端Client、Master和Worker。 客户端是用户节点提供了gRPC和RESTful的访问。 Master是一个管理节点管理所有Worker的信息包括Worker有哪些模型的信息Master也是一个分化节点接收到了客户端的请求之后会根据请求的内容结合当前管理的Worker节点的信息进行分发将请求分发给不同的Worker执行。 Worker是一个执行节点会执行加载、模型的更新在接收到Master转发的请求之后会将请求进行组装和拆分然后做前处理、推理和后处理执行完之后将结果返回给MasterMaster再将结果返回给客户端。
三、Features
1简单易用 对客户端提供了gRPC和RESTful的服务同时又提供了服务的拉起、服务的部署和客户端的访问提供了简单的python接口通过python接口用户可以很方便的定制和访问部署服务只需要一行命令就能够完成一件事。
2提供定制化的服务 对于模型来说输入和输出一般是固定的而对于用户来说输入和输出可能是多变的这就需要一个预处理模块将模型的输入转为一个模型可以识别的输入。同时还需要一个后处理模块给用户提供定制化的服务针对模型可以定制方法classifly_top用户根据需要去写前处理和后处理的操作。对于客户端来说只要指定模型名和方法名就能实现推理的结果。
3支持批处理 主要是针对具有batchsize维度的文本来说。batchsize实现了文本的并行在硬件资源足够的情况下batchsize可以很大地提高性能。对于MindSpore Serving来说用户一次性发送的请求是不确定的因此Serving分割和组合一个或者多个请求以匹配用户模型的batchsize。例如batchsize2但是有三个请求发过来这时候就会将两个请求合并处理到后面再拆分这样就实现了三个请求的并行提高了效率。
高性能扩展 MindSpore Serving所使用的算子引擎框架是MindSpore框架具有自动融合和自动并行的高性能再加上MindSpore Serving本身具有一个高性能的底层通信能力客户端可以进行多实例组装模型支持批处理多模型之间支持并发预处理和后处理支持多线程的处理。客户端和Worker可以实现扩展的因此它也实现了一个高扩展性。
四、Demo
基于昇腾910B3
start_agent.py
from agent.agent_multi_post_method import *
from multiprocessing import Queuefrom config.serving_config import AgentConfig, ModelNameif name main:startup_queue Queue(1024)startup_agents(AgentConfig.ctx_setting,AgentConfig.inc_setting,AgentConfig.post_model_setting,len(AgentConfig.AgentPorts),AgentConfig.prefill_model,AgentConfig.decode_model,AgentConfig.argmax_model,AgentConfig.topk_model,startup_queue)started_agents 0while True:value startup_queue.get()print(agent : %f started % value)started_agents started_agents 1if started_agents len(AgentConfig.AgentPorts):print(all agents started)break# server_app_post.init_server_app()# server_app_post.warmup_model(ModelName)# server_app_post.run_server_app()
client/server_app_post.py
import asyncio
import json
import logging
import signal
import sys
import uuid
from multiprocessing import Processimport uvicorn
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from sse_starlette.sse import EventSourceResponse, ServerSentEventfrom client.client_utils import ClientRequest, Parameters
from config.serving_config import SERVER_APP_HOST, SERVER_APP_PORT
from server.llm_server_post import LLMServerlogging.basicConfig(levellogging.DEBUG,filename./output/server_app.log,filemodew,format%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s)app FastAPI()
llm_server Noneasync def get_full_res(request, results):alltexts async for result in results:prompt result.promptanswer_texts [output.text for output in result.outputs]text answer_texts[0]if text is None:text all_texts textret {generated_text: all_texts,}yield (json.dumps(ret, ensure_asciiFalse) \n).encode(utf-8)async def get_full_res_sse(request, results):all_texts async for result in results:answer_texts [output.text for output in result.outputs]text answer_texts[0]if text is None:text all_texts textret {event: message, retry: 30000, generated_text: all_texts}yield json.dumps(ret, ensure_asciiFalse)async def get_stream_res(request, results):alltexts index 0async for result in results:prompt result.promptanswer_texts [output.text for output in result.outputs]text answer_texts[0]if text is None:text else:index 1all_texts textret {token: {text: text,index: index},}print(ret, index)yield (data: json.dumps(ret, ensure_asciiFalse) \n).encode(utf-8)print(all_texts)return_full_text request.parameters.return_full_textif return_full_text:ret {generated_text: all_texts,}yield (data: json.dumps(ret, ensure_asciiFalse) \n).encode(utf-8)async def get_stream_res_sse(request, results):all_texts index 0async for result in results:answer_texts [output.text for output in result.outputs]text answer_texts[0]if text is None:text else:index 1all_texts textret {event: message, retry: 30000, data: text}yield json.dumps(ret, ensure_asciiFalse)print(all_texts)if request.parameters.return_full_text:ret {event: message, retry: 30000, data: all_texts}yield json.dumps(ret, ensure_asciiFalse)def send_request(request: ClientRequest):print(request: , request)request_id str(uuid.uuid1())if request.parameters is None:request.parameters Parameters()if request.parameters.do_sample is None:request.parameters.do_sample Falseif request.parameters.top_k is None:request.parameters.top_k 3if request.parameters.top_p is None:request.parameters.top_p 1.0if request.parameters.temperature is None:request.parameters.temperature 1.0if request.parameters.repetition_penalty is None:request.parameters.repetition_penalty 1.0if request.parameters.max_new_tokens is None:request.parameters.max_new_tokens 300if request.parameters.return_protocol is None:request.parameters.return_protocol sseif request.parameters.top_k 0:request.parameters.top_k 0if request.parameters.top_p 0.01:request.parameters.top_p 0.01if request.parameters.top_p 1.0:request.parameters.top_p 1.0params {prompt: request.inputs,do_sample: request.parameters.do_sample,top_k: request.parameters.top_k,top_p: request.parameters.top_p,temperature: request.parameters.temperature,repetition_penalty: request.parameters.repetition_penalty,max_token_len: request.parameters.max_new_tokens}print(generate_answer…)global llm_serverresults llm_server.generate_answer(request_id, params)return resultsapp.post(/models/llama2)
async def async_generator(request: ClientRequest):results send_request(request)if request.stream:if request.parameters.return_protocol sse:print(get_stream_res_sse…)return EventSourceResponse(get_stream_res_sse(request, results),media_typetext/event-stream,ping_message_factorylambda: ServerSentEvent({comment: You cant see this ping}),ping600)else:print(get_stream_res…)return StreamingResponse(get_stream_res(request, results))else:print(get_full_res…)return StreamingResponse(get_full_res(request, results))app.post(/models/llama2/generate)
async def async_full_generator(request: ClientRequest):results send_request(request)print(get_full_res…)return StreamingResponse(get_full_res(request, results))app.post(/models/llama2/generate_stream)
async def async_stream_generator(request: ClientRequest):results send_request(request)if request.parameters.return_protocol sse:print(get_stream_res_sse…)return EventSourceResponse(get_stream_res_sse(request, results),media_typetext/event-stream,ping_message_factorylambda: ServerSentEvent({comment: You cant see this ping}),ping600)else:print(get_stream_res…)return StreamingResponse(get_stream_res(request, results))def update_internlm_request(request: ClientRequest):if request.inputs:request.inputs s|User|:{}eoh\n|Bot|:.format(request.inputs)app.post(/models/internlm)
async def async_internlm_generator(request: ClientRequest):# update_internlm_request(request)return await async_generator(request)app.post(/models/internlm/generate)
async def async_internlm_full_generator(request: ClientRequest):# update_internlm_request(request)return await async_full_generator(request)app.post(/models/internlm/generate_stream)
async def async_internlm_stream_generator(request: ClientRequest):# update_internlm_request(request)return await async_stream_generator(request)def init_server_app():global llm_serverllm_server LLMServer()print(init server app finish)async def warmup(request: ClientRequest):request.parameters Parameters(max_new_tokens3)results send_request(request)print(warmup get_stream_res…)async for item in get_stream_res(request, results):print(item)def warmup_llama2():request ClientRequest(inputstest)asyncio.run(warmup(request))print(warmup llama2 finish)def warmup_internlm():request ClientRequest(inputstest)update_internlm_request(request)asyncio.run(warmup(request))print(warmup internlm finish)def run_server_app():print(server port is: , SERVER_APP_PORT)uvicorn.run(app, hostSERVER_APP_HOST, portSERVER_APP_PORT)WARMUP_MODEL_MAP {llama: warmup_llama2,internlm: warmup_internlm,
}def warmup_model(model_name):model_prefix modelname.split()[0]if model_prefix in WARMUP_MODEL_MAP.keys():func WARMUP_MODEL_MAP[model_prefix]warmup_process Process(targetfunc)warmup_process.start()warmup_process.join()print(mindspore serving is started.)else:print(model not support warmup : , model_name)async def _get_batch_size():global llm_serverbatch_size llm_server.get_bs_current()ret {event: message, retry: 30000, data: batch_size}yield json.dumps(ret, ensure_asciiFalse)async def _get_request_numbers():global llm_serverqueue_size llm_server.get_queue_current()ret {event: message, retry: 30000, data: queue_size}yield json.dumps(ret, ensure_asciiFalse)app.get(/serving/get_bs)
async def get_batch_size():return EventSourceResponse(_get_batch_size(),media_typetext/event-stream,ping_message_factorylambda: ServerSentEvent({comment: You cant see this ping}),ping600)app.get(/serving/get_request_numbers)
async def get_request_numbers():return EventSourceResponse(_get_request_numbers(),media_typetext/event-stream,ping_message_factorylambda: ServerSentEvent(**{comment: You cant see this ping}),ping600)def sig_term_handler(signal, frame):print(catch SIGTERM)global llm_serverllm_server.stop()print(—-serving exit—-)sys.exit(0)if name main:signal.signal(signal.SIGTERM, sig_term_handler)init_server_app()# warmup_model(ModelName)run_server_app()
- 上一篇: 宁德市建设局网站深圳画册设计价格
- 下一篇: 宁国市城乡与住房建设网站回力网站建设初衷
相关文章
-
宁德市建设局网站深圳画册设计价格
宁德市建设局网站深圳画册设计价格
- 技术栈
- 2026年03月21日
-
宁德市建设局网站内蒙古做网站
宁德市建设局网站内蒙古做网站
- 技术栈
- 2026年03月21日
-
宁德市城乡住房建设厅网站网站最新点击量排名
宁德市城乡住房建设厅网站网站最新点击量排名
- 技术栈
- 2026年03月21日
-
宁国市城乡与住房建设网站回力网站建设初衷
宁国市城乡与住房建设网站回力网站建设初衷
- 技术栈
- 2026年03月21日
-
宁国市网站建设淮北建设银行官方网站
宁国市网站建设淮北建设银行官方网站
- 技术栈
- 2026年03月21日
-
宁海网站建设wordpress 页面模版
宁海网站建设wordpress 页面模版
- 技术栈
- 2026年03月21日






