京东Triton实践:深度学习推理优化与部署

版权申诉
0 下载量 125 浏览量 更新于2024-07-06 收藏 473KB PDF 举报
"京东在深度学习推理服务的实践中采用了NVIDIA的Triton推理服务器,以解决‘烟囱式’开发、模型管理混乱以及资源利用不充分等问题。Triton提供了多运行时联合推理、统一接口和部署方式,优化了性能,并随着需求演进,经历了从洪荒时代到黄金时代的三个阶段,不断强化其功能和性能,以适应日益增长的业务需求和性能要求。" 京东在深度学习推理服务中遇到的挑战主要集中在三个方面:首先,由于"烟囱式"的开发模式,导致项目成本高,不易集成,且资源重复投入;其次,模型研发缺乏统一的标准,导致沟通协作困难;最后,基础资源分散管理,无法高效利用,造成了资源浪费。为了解决这些问题,京东选择了NVIDIA的Triton推理服务器,该平台支持多种模型和框架,能提供统一的管理和部署方式,有助于提升整体的工程效率。 Triton在京东的落地过程中,经历了从初期的简单应用到逐步完善的三个阶段。在"洪荒时代",Triton主要作为CPU推理服务,服务于语音TTS等特定场景;"黑铁时代",随着对性能和缓存管理的需求增加,Triton引入了流程编排和API适配,增强了可观测性和安全性;到了"黄金时代",Triton进一步支持了HTTP、gRPC、WebSocket等多种协议,增加了监控、自动化部署和日志管理等功能,形成了完整的业务协议解析和资源管理架构。 Triton的优势在于其强大的灵活性和可扩展性,通过统一的算法资源调度,实现多运行时联合推理,提升了服务性能。同时,Triton提供了自定义算子管理,允许业务根据自身需求进行优化,进一步满足了性能需求。此外,JD还构建了Triton++和ServAPI,以及业务适配层插件,这些中间件层的存在,使得业务层能够更好地与推理服务集成,降低了开发复杂性。 京东使用Triton的经验展示了深度学习推理服务如何通过统一管理和优化实现更高的效率和性能。这一实践不仅改善了内部开发流程,也推动了京东在人工智能领域的技术创新和业务发展。通过不断迭代和优化,Triton成为了京东应对复杂业务场景、提高推理效率的关键工具。

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. spyder 5.4.1 requires pyqt5<5.16, which is not installed. spyder 5.4.1 requires pyqtwebengine<5.16, which is not installed. Successfully installed aiofiles-23.1.0 altair-4.2.2 blinker-1.6.2 cachetools-5.3.1 chardet-5.1.0 cmake-3.26.3 cpm_kernels-1.0.11 fastapi-0.95.2 ffmpy-0.3.0 gitdb-4.0.10 gitpython-3.1.31 gradio-3.32.0 gradio-client-0.2.5 h11-0.14.0 httpcore-0.17.2 httpx-0.24.1 latex2mathml-3.76.0 linkify-it-py-2.0.2 lit-16.0.5 markdown-it-py-2.2.0 mdit-py-plugins-0.3.3 mdtex2html-1.2.0 mdurl-0.1.2 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-cupti-cu11-11.7.101 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.2.10.91 nvidia-cusolver-cu11-11.4.0.1 nvidia-cusparse-cu11-11.7.4.91 nvidia-nccl-cu11-2.14.3 nvidia-nvtx-cu11-11.7.91 orjson-3.8.14 protobuf-3.20.3 pydantic-1.10.8 pydeck-0.8.1b0 pydub-0.25.1 pygments-2.15.1 pympler-1.0.1 python-multipart-0.0.6 rich-13.4.1 semantic-version-2.10.0 sentencepiece-0.1.99 smmap-5.0.0 starlette-0.27.0 streamlit-1.22.0 streamlit-chat-0.0.2.2 torch-2.0.1 transformers-4.27.1 triton-2.0.0 tzlocal-5.0.1 uc-micro-py-1.0.2 uvicorn-0.22.0 validators-0.20.0 websockets-11.0.3 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv 解释下

2023-06-02 上传

请帮我翻译每一句代码:def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--weights', nargs='+', type=str, default='D://Net//pytorch//yolov5-master//yolov5-master//runs//train//exp3//weights//best.pt', help='model path or triton URL') parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)') parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path') parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[480], help='inference size h,w') parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold') parser.add_argument('--max-det', type=int, default=1000, help='maximum detections per image') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--view-img', action='store_true', help='show results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes') parser.add_argument('--nosave', action='store_true', help='do not save images/videos') parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') parser.add_argument('--visualize', action='store_true', help='visualize features')

2023-05-11 上传