介绍
Marc Andreessen 在 2011 年 8 月的一篇博文中以这句话开头:“软件正在吞噬世界。”他的预测是软件开发将颠覆传统行业。事实上,像 Airbnb、Netflix 和 Uber 这样的公司作为“按需”经济中的众多赢家之一,以显著且持久的方式颠覆了旅游、娱乐和购物等行业。
大约一年后,在 2012 年 10 月,哈佛商业评论报道称数据科学家是“21 世纪最性感的职业”,承诺能够“从非结构化数据中挖掘宝藏”的专业人士。而结构化数据的竞赛开始了,各个组织开始仔细审视其杂乱无章的数据,并找到方法使其更便于机器使用。
快进七年到 2019 年 10 月,麦肯锡全球研究院发表了关于“人工智能的春天即将到来”的激动人心而又发人深省的话语。他们的研究表明,数百个商业案例共同拥有每年创造 3.5 万亿美元至 5.8 万亿美元价值的潜力。随着组织应用人工智能,他们发现人工智能可以产生巨大的商业价值。数据科学能力已成为高性能人工智能的先决条件,因此组织增加了对技术、数据科学团队以及机器学习和深度学习等技术的投资。
在 2022 年 8 月,Stable Diffusion凭借其使用 Python 和深度学习构建的文本到图像模型震惊了视觉艺术界,该模型可以根据文本提示生成详细的图像。它激发了世界对人工智能的迷恋,并掀起了新一轮人工智能浪潮:生成式人工智能。
最后,三个月后的 2022 年 11 月,OpenAI 发布了另一个生成模型:ChatGPT,这是一种大型语言模型 (LLM),它利用 OpenAI 的 GPT-3 和 GPT-4 LLM 进行训练,可以根据用户的提示生成文本。在很短的时间内,LLM 席卷了众多行业,并带来了新产品和新功能,使程序员能够与机器一起编写和调试代码,以及作家能够与人工智能合作创作内容,仅举几个日益增长的用例。
寻找企业平台
随着所有这些进步,似乎每个组织都应该以某种方式将这些新技术融入其研究、产品和运营中。但是,要充分发挥这些技术的潜力,需要一组功能齐全的工具、干净且结构化的数据、专家团队以及开源软件的力量,这些都得到了活跃的制作者和维护者社区的支持。
在整个企业组织中利用开源软件的力量需要构建和部署安全 Python 解决方案的能力。现在出现了大量可供选择的工具,这些工具可以使团队能够协作并使用数据科学和机器学习构建强大的应用程序。但是,将工具拼凑在一起以将预测模型部署到生产环境中并不是创建平台的最佳方法,您的组织可以依赖该平台来提供卓越的结果。而且构建自己的平台可能会很昂贵且复杂,因为您需要维护自己创建的平台。
找到一个能够提供所需开源软件包、允许您在生产环境中再现和扩展模型的托管环境以及保护您的组织免受不良代码和不良行为者的安全工具的企业平台可能是一项艰巨的挑战。这就是本指南的意义所在——探讨在选择使用 Python 和开源软件的企业平台以实现组织的开发目标时,需要考虑哪些因素。
什么是平台?
对平台的一种流行描述来自微软首席执行官比尔·盖茨,由 Charmath Palapithiya 转述:“平台是指,所有使用它的人的经济价值超过了创建它的公司的价值。”在评估平台时,请考虑这些基本特征,这些特征将帮助您利用社区的创新,让您的团队使用 Python 与开源软件开发和部署应用程序。
- 个人用户数量:用户越多,发现其他人分享的新技术的机会就越多,更快地识别和解决安全风险的机会就越多,以及从丰富的软件制造商和维护者社区中受益的机会就越多。
- 企业用户数量:企业用户越多,该平台在规模上的测试就越充分。用户数量可以用某个组织或企业的总群体的百分比来表示,例如财富 500 强。
- 经验年限:一个组织开发其平台的时间越长,其团队在工具、技术和用例方面的专业知识就可能越多。
跨行业客户:平台应用的行业越多,该平台及其支持团队遇到的集成、用例和数据类型就可能越多。
Python、开源、数据科学和企业
数据科学彻底改变了企业运营的方式。如今,似乎每个人都在以某种方式处理数据,无论是分析客户行为、构建预测模型还是创建生成模型。随着对数据驱动洞察的需求不断增长,Python 已成为数据科学工作的不二之选。
事实上,Python长期以来一直是数据科学工作的黄金标准,这在很大程度上要归功于它的简洁性和多功能性。与其他语言不同,Python允许用户轻松地操作和分析数据,使其成为从数据可视化到机器学习的各种任务的理想选择。此外,众多开源库和框架的可用性确保了 Python 仍然是数据科学家的热门选择。
开源软件让开发者可以访问全球贡献者网络,这些贡献者不断更新和改进代码,使公司能够比以往更快、更高效地创建应用程序。根据Synopys 2023 年开源软件风险分析报告,绝大多数(96%)的代码库包含开源软件。
开源软件的广泛应用是有道理的;开源不仅帮助公司节省了许可费用,而且还使他们能够利用开源社区的集体知识来创建满足其特定业务需求的定制解决方案。因此,开源已成为希望在快节奏的技术世界中保持领先地位的组织的必不可少的战略工具。
然而,在过去的几年里,在企业组织中管理 Python 开发变得更加复杂和困难。这在一定程度上是由于 Python 社区内部的快速发展,导致定期发布新工具和新技术。其中一些工具是专有的,而另一些则是开源的。虽然从根本上说,这对使用数据的团队来说是一个积极的发展,但它也可能使他们难以跟上最新的技术和最佳实践。
尽管存在这些挑战,但 Python 仍然是可用于数据科学工作的最强大和最通用的工具之一。随着行业不断发展,Python 将仍然是任何成功的 数据科学团队工具箱中的关键组成部分。
企业 Python 挑战
在 Anaconda,我们与世界各地使用 Python 的组织交谈。我们发现,这些团队中的大多数都面临着类似的挑战,并且试图以类似的方式解决这些挑战。
1. 软件包管理和构建环境
对于繁忙的企业团队来说,管理软件包和构建环境是一个重大挑战。许多团队手动管理软件包,这有利于他们控制每个软件包和定制环境。但是,这很耗时且容易出错。它还会导致环境不一致,并且缺乏对数据保护和资源治理的监督。
其他团队使用专有的第三方软件包管理工具,这些工具可以简化软件包管理并提供现成的功能。但是,这些工具不适合 Python 工作流。它们提供的自定义选项有限,迫使你依赖供应商来构建工具以满足你的业务需求。
2. 协作与部署
项目协作是构建和扩展优秀模型的重要组成部分,因此可重复性是一个巨大的挑战,尤其是在大型团队中。大多数团队以支离破碎的方式进行此操作,模型位于单个机器上,导致数据科学家和数据工程师经常听到这样一句话:“在我的机器上可以正常工作。”
在部署方面,手动流程可以让你更好地控制你的管道,但与手动软件包管理一样,它们也很耗时,容易出现错误和可扩展性问题。构建自己的部署基础设施可以让你进行自定义,并给你更多控制权,但由于开发和维护成本高,你可能会看到较低的投资回报率。
有一些易于使用的机器学习平台,它们提供现成的功能和一些支持,但与开源软件相比,这些平台可能非常限制,定制选项有限。它们也可能相当昂贵。
3. 治理和保护开源管道
你开源软件包的信赖来源从未像现在这样重要。2023 年 3 月的国家网络安全战略以及来自美国国家标准与技术研究院 (NIST) 的框架表明,安全责任正在转移到开发软件的组织和个人身上。
手动安全审计可以帮助你满足最低的监管要求并识别一些安全风险。但是,它们也很耗时且资源密集,并且使你的组织处于被动位置。内部安全培训可以提高意识并推广良好做法,但其有效性有限,仅凭它是不够的。
第三方扫描工具通常易于使用,并且像某些机器学习平台一样,提供现成的功能和一些支持。但是,这些工具不适合 Python 工作流,会产生大量的误报,并且可能无法正确处理编译后的软件包。
企业 Python 平台的顶级功能:买家清单
企业平台应该足够灵活,以满足你今天的需求,并且足够强大,以承受未来工作负载和项目的压力。在评估适用于 Python 和开源软件的企业平台时,你可以使用此清单。
基本功能
1. 数据集成
其他供应商 | |||
可以集成 | 可以集成 | 无法集成 | |
代码仓库 (Git、Bitbucket) | ✅ | ||
数据湖支持 | ✅ | ||
文件系统 | ✅ | ||
Hadoop (Cloudera、Hortonworks、EMR) | ✅ | ||
物联网/传感器数据 | ✅ | ||
监控解决方案(日志转发) | ✅ | ||
NoSQL | ✅ | ||
专有数据库 (SAS、Teradata) | ✅ | ||
SQL | ✅ | ||
Web 数据集成 | ✅ |
2. 基础设施和硬件
其他供应商 | ||||
支持,并且可以进行断网隔离 | 支持,并且可以进行断网隔离 | 支持,但不能进行断网隔离 | 不支持 | |
AWS Sagemaker | ✅ | |||
Azure | ✅ | |||
Domino Data Lab MLOps | ✅ | |||
✅ | ||||
Microsoft Azure | ✅ | |||
Oracle Cloud Infrastructure (OCI) | ✅ | |||
Snowpark for Python | ✅ | |||
本地(VSphere) | ✅ | |||
本地(裸机) | ✅ | |||
断网隔离 | ✅ | |||
GPU 和 CPU 支持 | ✅ |
3. 机器学习功能
其他供应商 | |||
支持 | 支持 | 不支持 | |
分类和回归 | ✅ | ||
深度学习 | ✅ | ||
生成对抗网络 (GAN) | ✅ | ||
预训练的大型语言模型 (LLM) | ✅ | ||
强化学习 | ✅ | ||
支持向量机 (SVM) | ✅ | ||
测试策略(A/B、多臂老虎机、敏感性分析) | ✅ | ||
文本到图像模型 | ✅ | ||
文本和图像分析与处理 | ✅ | ||
时间序列分析 | ✅ |
4. 协作与部署
其他供应商 | |||
可用 | 可用 | 不可用 | |
集中式项目中心 | ✅ | ||
一键部署 | ✅ | ||
部署 REST API | ✅ | ||
部署 Web 应用程序 | ✅ | ||
用于协作和部署的治理控制 | ✅ | ||
作业调度程序/自动化 | ✅ | ||
版本控制 | ✅ | ||
可视化和仪表板 | ✅ |
5. 支持
其他供应商 | |||
可用 | 可用 | 不可用 | |
专门的支持联系人 | ✅ | ||
保证正常运行时间 SLA | ✅ | ||
访问令牌 | ✅ | ||
高级故障排除支持 | ✅ | ||
Anaconda 软件包管理方面的协助 | ✅ | ||
自定义 conda 软件包构建 | ✅ | ||
自定义安装程序构建 | ✅ | ||
环境管理问题 | ✅ | ||
学习:现场和点播 | ✅ | ||
高需求期间的仓库访问 | ✅ | ||
严重程度响应:级别 1 | 12 小时,标准 1 小时,高级 | ||
严重程度响应:级别 2 | 24 小时,标准 12 小时,高级 | ||
技术支持 | ✅ |
6. 安全和治理
其他供应商 | ||||
包含 | 包含 | 可以集成 | 不可行 | |
管理监控(跟踪用户、项目、部署) | ✅ | |||
审计日志 | ✅ | |||
云原生安全控制 | ✅ | |||
灾难恢复 | ✅ | |||
端到端加密 | ✅ | |||
软件包签名验证 | ✅ | |||
发布权限 | ✅ | |||
基于角色的用户访问控制 | ✅ | |||
扫描常见漏洞和披露 (CVE) | ✅ | |||
安全软件包仓库 | ✅ | |||
软件物料清单 (SBOM) | ✅ |
协作与工具
1. 笔记本和集成开发环境 (IDE)
其他供应商 | ||||
用途 | 包含 | 包含 | 未包含 | |
Jupyter Notebook | 创建和共享计算文档 | ✅ | ||
JupyterLab | Jupyter 的 Web 界面 | ✅ | ||
PyCharm | 用于 Python 编程的 IDE | ✅ | ||
RStudio | 用于 Python 和 R 的 IDE 工具 | ✅ | ||
Spyder | 用于科学编程的科学 Python 开发环境 | ✅ | ||
Visual Studio Code (VS Code) | 用于调试、代码片段、代码重构等的源代码编辑器 | ✅ |
2. 数据可视化功能
其他供应商 | |||
支持 | 支持 | 不支持 | |
允许用户选择他们喜欢的绘图库(例如,Bokeh、hvPlot、Matplotlib、Plotly) | ✅ | ||
支持完全交互式可视化 | ✅ | ||
支持可视化非常大的(例如,PB 级)数据集 | ✅ | ||
支持在 Jupyter 或独立应用程序中进行可视化 | ✅ |
3. 数据科学和机器学习库
Anaconda 让你可以访问数千个库。下面我们列出了最常见的库中的几个,以帮助你比较你的选项。
其他供应商 | ||||
用途 | 可访问 | 可访问 | 不可访问 | |
Dask | 并行和分布式计算 | ✅ | ||
Django | 用于设计的 Python Web 框架 | ✅ | ||
Flask | 模型部署 | ✅ | ||
Keras | 深度学习框架(TensorFlow 的 API) | ✅ | ||
Kubeflow | Kubernetes 上的 ML 工作流 | ✅ | ||
MLflow | 实验跟踪 | ✅ | ||
NumPy | 对数组进行数学运算 | ✅ | ||
Pandas | 处理数据集——分析、清理、探索和操作数据 | ✅ | ||
Prophet | Python 中的时间序列预测 | ✅ | ||
PyTorch | 开发和训练深度学习模型 | ✅ | ||
SciPy | 科学和技术计算(基于 NumPy) | ✅ | ||
Scikit-learn | 用于分类、回归和聚类算法的 ML 库 | ✅ | ||
TensorFlow | 开发和训练 ML 模型 | ✅ | ||
Theano | 涉及多维数组的数学表达式(基于 NumPy) | ✅ | ||
XGBoost | 分布式梯度提升库 | ✅ |
4. 模型部署和管理
其他供应商 | |||
是 | 是 | 否 | |
从 QA 部署 | ✅ | ||
部署到生产环境 | ✅ | ||
一键部署到预先配置的资源 | ✅ | ||
在生产环境中细化模型 | ✅ | ||
可重复性——回滚到较旧的模型 | ✅ | ||
已部署应用程序的集中式管理 | ✅ |
Anaconda 的平台使创新成为可能
十多年来,行业领袖一直在使用 Anaconda 的平台来构建世界上一些最具创新性的预测、产品和体验。数据科学和机器学习团队依靠我们值得信赖的软件包和功能来集中开源软件访问权限,并赋能一致、可重复的工作流。
企业从业者使用我们的平台在用户和团队之间进行协作,集中工作流以实现更好的可重复性和可扩展性,并部署模型到生产环境中,只需单击一次。
IT 管理员和安全团队选择 Anaconda,因为它是 Python 生态系统中唯一一个拥有数千个软件包的平台,这些软件包与社区软件包提供商不同,它们是私有托管的,从源代码构建的,并且没有恶意软件包。
最后,你可以在云端或本地部署 Anaconda——包括私有云、托管主机和断网隔离选项——使 Anaconda 成为在高度管制行业或处理敏感或受保护数据的组织的首选平台。使用 Anaconda,安心不再是幻想,而是现实。
想要了解更多有关 Anaconda 如何帮助你的团队更快地构建和部署安全的 Python 解决方案的信息吗?预约与我们的一位专家会面,讨论你组织的要求。