下一代 Docker 来了!1小时构建缩至1.5分钟,还能结合 LangChain、Ollama 等做 AI 应用开发
在日前于洛杉矶召开的 Dockercon 大会上,缔造开源容器技术的同名公司 Docker 发布了一系列产品,在致力于加速本地和云上应用程序交付的同时,还与生成式 AI 做了结合,深入探索这一新鲜趋势中的技术潜力。
与 AI 的深度集合
如今,在几乎所有用于训练和推理的生成式 AI 应用当中,Docker 容器已经成为最主流的部署方法。这次大会,Docker 推出了新的 GenAI Stack,可以在几分钟内帮助开发人员启动 GenAI 应用程序。
“开发人员对 GenAI 的可能性感到兴奋,但技术堆栈的变化速度、供应商数量和巨大差异使其难以了解应该如何下手。”Docker 公司 CEO Scott Johnston 表示,虽然目前用 Docker 容器来协助共享和部署 AI 模型的作法已经非常普遍,但仍需要更多探索来进一步降低生成式 AI 应用的开发门槛。
现在,Docker 发布的 GenAI Stack 能够显著简化整个流程,将 Docker 与 Neo4j 图数据库、LangChain 模型链接技术和用于运行大语言模型(LLM)的 Ollama 相集成。具体组件包括:
预配置的开源 LLM(例如 Llama2、Code Llama、Mistral),或私有模型(例如 OpenAI 的 GPT-3.5和 GPT-4);
Ollama 帮助开发人员在本地启动并运行开源 LLM;
Neo4j 作为图形和原生向量搜索的默认数据库,可以发现数据中显式和隐式的模式和关系,使 AI/ML 模型更快、更准确,并作为这些模型的长期记忆;
Neo4j 知识图谱作为 LLM 的知识库,以获得更准确的 GenAI 预测和结果;
LangChain 在 LLM、应用程序和带有向量索引的数据库之间进行编排,并作为开发由 LLM 提供支持的上下文感知推理应用程序的框架;
还有一系列支持工具、代码模板、操作方法和 GenAI 最佳实践。
GenAI Stack 拥有多种目标用例,包括构建具有检索增强生成(RAG)功能的支持型客服机器人、Python 编码助手和自动内容生成工具等。开发人员能够无缝导入数据、创建向量索引、嵌入问题和答案,并将它们存储在向量索引中;还可以生成各种格式的回复,例如项目列表、思维链、GitHub issue、pdf、诗歌等。此外,开发人员可以比较 LLM 自身、带有向量的 LLM 以及集成了向量和知识图谱的 LLM。
Johnston 指出,“整套方案预先配置、准备就绪,开发人员可以随时在这里开始编码并启动实验。”GenAI Stack 现已在 Docker Desktop 学习中心和 https://github.com/docker/genai-stack 的存储库中提供。
此外,本届 Dockercon 上也公布了全新亮相的 Docker AI 产品,将成为开发人员获取 AI 驱动见解及容器开发建议的集成化服务。
当今市场上,各类生成式 AI 开发者工具并不少见。其中既有 GitHub Copilot 这位超级明星,也有 Amazon CodeWhisper 等人气选项。Docker 如今也携自家生成式 AI 工具(简称为 Docker AI)加入战局。
Docker 并没有像微软及其他供应商那样将 Docker AI 称为“copilot”(即拉力赛车中坐在副驾的领航员,目前多数厂商倾向于使用这个术语来描述辅助用户的生成式 AI 工具),而选择了特别的称呼:“机甲”。Docker 应该是希望自己的“机甲套装”能为开发者赋予完成任务所需要的强大力量。
据介绍,Docker AI 已经接受了来自数百万个 Dockerfile、compose 文件及错误日志中 Docker 专有数据的训练。Docker AI 将被直接集成至开发者的工作流程当中,以便在发生错误时提供帮助。它将显示开发环境中潜在的修复选项,允许开发者在提交变更之前测试修复效果。Docker AI 的目标也很简单,就是为开发者提供更好的工作体验,并确保在问题发生之前进行故障排查与修复。
Johnston 指出,虽然 GitHub Copilot 等同类工具已经非常实用且功能强大,但 Docker AI 也有自己的独特优势:经过专门微调以适应容器开发需求。“Docker AI 在训练中接触的,是其他大语言模型难以触及的丰富专有 Docker 数据流。”
本地与云的协作
除了在 AI 上发力,Docker 还发布了三款新产品:Docker Scout、Next-generation Docker Build 和 Docker Debug,致力于将本地开发的响应能力和便利性与云的按需资源、连接性和协作结合起来。上述三个产品是对现有 Docker 产品(Docker Desktop、 Private Repos 以及 Docker Hub)的补充。
Johnston 表示:“云为开发团队提供了许多潜在的好处,但大多数‘内循环’解决方案都需要彻底改变工具和工作流程,而且很少有开发人员愿意将他们的整个笔记本电脑放到云端运行。” 而新产品将云带到了开发团队代码 - 构建 - 测试 - 调试的“内循环”过程中:
Docker Scout GA
Docker Scout 目前已经正式推出,能够在应用程序使用的库中发现已报告的漏洞。Docker Scout 补充了 Docker 现有的可信内容、构建自动化和 SBOM 工具,添加了相关的见解、策略评估和上下文修复,同时通过与 Sysdig、JFrog Artifactory、AWS ECR、BastionZero、GitHub、GitLab、CircleCI 和 Jenkins 集成来满足开发人员的工作需求。
实际上,GitHub 的 Dependabot 等工具已经可以实现类似的功能,它的出现会不会多此一举?Johnston 对此表示,“我们的目标是与 GitHub 合作,而非与之对抗和竞争。我们希望共同为开发人员提供完整的项目视图,Sysdig 就是典型的案例。”
注:Sysdig 是一款与 Scout 相集成的第三方工具,它能“显示运行时中实际执行的内容,并据此在仪表板中优先显示开发者较为关注的内容。
Docker Scout,现已全面上市
Next-generation Docker Build
“我们发现每位开发团队成员日均要花一个小时来等待容器镜像构建完成,这是因为此前的 Docker Build 只能以本地方式运行。”Johnston 指出。现在,只需切换 Build 命令行即可将构建负载移交至云端。
“与本地构建相比,我们发现远程构建的速度提高了39倍。”这等效率提升不仅要归功于强大的设施资源,更得益于缓存机制的支持。“开发团队经常会使用相同的基础镜像,所以只要把这类镜像缓存起来,每位团队成员都能从中获益。”
那么,Next-generation Docker Build 到底是单纯服务于开发,还是可以成为持续集成(CI)部署流程中的一部分?Johnston 给出的答案是,“它初步面向开发流程,但我们也看到有用户在尝试将其引入持续集成流程。”例如,开发者可以在 GitHub Actions 或者 GitLab Pipelines 处调用 Docker Build。
Docker Debug
Docker Debug 想要解决的问题并不难理解:当应用程序在容器内的运行时中发生故障时,我们往往难以精准跟踪。开发人员可能会花费多达60% 的时间来调试应用程序,但是大部分时间花在了排序、配置工具和设置上,而非实际的调试上。
Johnston 表示,“以往,开发者根本没有一款用于深入探索容器内部的工具。而 Docker Debug 提供的就是这样一套具备语言中立性的一体式工具集,能够帮助开发人员专注于解决问题、避免在设置调试工具上浪费精力。”
实际上,Docker Debug 本身也是个容器,只是容纳的是开发者调试工具。Docker 公司一位发言人解释称,它的工作原理就是提供一套工具集,用以调试挂载了损坏容器文件系统的容器。Docker 还引入了其他一些功能,例如分析入口点、验证入口点的二进制文件或 CMD 等,并围绕潜在问题提供更好的用户体验。”
在构建包含调试工具与容器内运行内容的文件系统的过程中,Docker Debug 会使用 Nix(一款软件包管理器兼系统配置工具)等工具创建辅助文件系统,之后 Docker Debug 会调用 mergefs 来合并这两套文件系统(即原始文件系统加调试工具系统)。“如此一来,就能得到一套同时包含原始容器及所有调试工具的文件系统。”
Johnston 还反复强调,开发者用户其实并不需要过于纠结这些细节。“对于开发者来说,这套工具集就是能轻松发挥出‘神奇的’效力。”
结束语
在去年3月底宣布获得1.05亿美元的 C 轮融资后,Docker 进行了一系列收购,包括 Mutagen、Atomist、Tilt 、Nestybox 等,在软件供应链安全、高性能远程开发等方面持续投入。这次大会上,Johnston 透露,Docker 每月活跃开发者数量已高达2000万,而且从业务角度看 Docker 已经拥有超过7.9万家商业客户。
Johnston 曾在今年3月指出,Docker 收入正稳步增长、在过去3年间增长了30倍。而支撑这种喜人局面的,恰恰是某些不受欢迎的决定,例如2021年将 Docker Desktop 由免费产品调整为付费产品,包括将团队(Teams)账户纳入价格更高的商业(Business)订阅。但从目前的情况看,力排众议的决策已经初见成效,Docker 现在有更多资金可用于打磨自己的技术储备。