Page 1 of 1

受限网络中的 LLMOps 以及解决持续评估的长期约束

Posted: Sat Jan 25, 2025 9:39 am
by jrineakter
大卫·李
在本文中,我们将探讨使用 Azure 机器学习在管道内建立 LLMOps 和持续评估时面临的挑战。特别是在处理长距离运行和受限的自带 (BYO) 网络时。

背景
在我们最近的合作中,我们使用 Prompt Flow 开发了一个大型语言模型 (LLM) 应用程序,并在 Azure 机器学习 (AML) 中进行了实验和评估。我们建立了一个自动化管道,在部署任何更改之前运行评估。由于这是一个受限网络,而且这是客户第一次在其环境中使用 Azure ML 服务,因此我们必须进行大量配置、解决方法和将服务列入白名单才能实现它。我们还对 LLM 聊天应用程序进行了端到端评估,耗时 6 个小时。数据科学 (DS) 团队意识到这个 E2E 评估运行不需要在每次提交时运行,因此我们提供了一种跳过它的机制,并为 DS 和工程团队提供了一个选项,让他们根据提交的更改在每次 CI 运行中做出明智的决定。

受限网络
此次 Azure 合作中的专用网络完全基于虚拟网络内的专用 IP 运行,确保安全性和隔离性。网络分为多个子网,每个子网根据其角色和功能托管特定资源。资源之间的通信在虚拟网络内部进行,并有严 IT 主管经理电子邮件列表 格的控制以防止未经授权的访问。网络安全组强制执行白名单规则,仅允许受信任的 IP 或特定资源进行连接。网络是完全私有的,没有公共 IP,依靠专用端点或安全隧道(如 VPN 网关)进行受控的外部访问。这种设计可确保为敏感工作负载提供强大而安全的环境。

总体管道流程
替代文本

使用 git flow 的分支策略
整个过程涉及三个分支

开发分支——这是把关分支,开发人员从这里创建功能分支来执行他/她的更改,并通过创建 PR 来控制何时从主分支发布。
功能分支 – 开发人员将从开发分支分支,开发他们的更改,测试它,并创建拉取请求 (PR) 返回到开发分支。这遵循命名规则:开发人员名称/问题 ID-功能名称
主分支 – 当更改合并到主分支时发生部署。
分支策略的注意事项
Git Flow 的好处:
有组织的工作:各种类型的分支(功能、发布、修补程序等)使您可以轻松直观地组织您的工作。
高效测试:系统化的开发流程允许在不同阶段进行高效测试。
多版本支持:使用 release branch-main 可以让你轻松、持续地支持代码的多个版本(我们使用了 semver)并控制部署(例如,在功能完成时部署更改,而不是在每次提交时部署)。
Git Flow 的挑战:
过度复杂:根据产品的复杂性,Git 流模型可能会过度复杂化并减慢开发过程和发布周期。
部署延迟:热修复和错误修复必须遵循完整的 Git 流程。绕过此流程可能会导致代码冲突、中断和破坏现有流程。
LLM 应用程序开发或任何 ML 应用程序开发的挑战在于,它涉及数据科学家、工程师和平台团队的协作和独立模块的工作。采用 git flow 策略,并有代表负责和执行发布,帮助我们的团队可靠地执行受控的变更发布。