SynapseML:简单而强大的分布式机器学习库
SynapseML(前身为MMLSpark)是微软开源的分布式机器学习库,旨在简化大规模机器学习管道的创建过程。它为Apache Spark生态系统提供了简单、可组合和分布式的API,涵盖了文本分析、计算机视觉、异常检测等多种机器学习任务。
主要特性
SynapseML建立在Apache Spark分布式计算框架之上,与SparkML/MLLib库共享相同的API,因此可以无缝地将SynapseML模型嵌入到现有的Apache Spark工作流中。它具有以下主要特性:
-
简单易用:提供简洁的API,只需几行代码即可创建、训练和使用分布式机器学习工具。
-
高度可扩展:可以在数百台机器组成的Spark集群上扩展ML工作负载。
-
多语言支持:支持Python、R、Scala、Java和.NET等多种语言。
-
开放性:开源项目,可以安装在任何Spark 3基础设施上使用,包括本地机器、Databricks、Synapse Analytics等。
核心功能
SynapseML提供了多种强大的功能:
-
Vowpal Wabbit on Spark:快速、稀疏和高效的文本分析。
-
Cognitive Services for Big Data:在现有SparkML管道中以前所未有的规模利用Microsoft认知服务。
-
LightGBM on Spark:使用LightGBM训练梯度提升机。
-
Spark Serving:将任何Spark计算作为亚毫秒延迟的Web服务提供。
-
HTTP on Spark:Spark与HTTP协议之间的集成,实现分布式微服务编排。
-
ONNX on Spark:在Spark上进行分布式和硬件加速的模型推理。
-
Responsible AI:理解不透明模型并衡量数据集偏差。
-
Isolation Forest on Spark:分布式非线性异常检测。
安装和使用
SynapseML可以在多种平台上安装使用,包括:
- Microsoft Fabric
- Azure Synapse Analytics
- Databricks
- 独立Python环境
- Spark Submit
- SBT
- Docker
以Azure Synapse Analytics为例,在notebook的第一个单元格中添加以下配置即可安装SynapseML:
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:1.0.4",
"spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
"spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
"spark.yarn.user.classpath.first": "true",
"spark.sql.parquet.enableVectorizedReader": "false"
}
}
应用案例
SynapseML已在多个领域得到应用:
-
帮助濒危物种:使用AI识别雪豹。
-
生成对抗性艺术:与大都会艺术博物馆和MIT合作探索生成艺术。
-
图像分析:与Apache Spark合作支持图像数据。
总结
SynapseML为Apache Spark生态系统带来了强大的机器学习能力,使数据科学家和工程师能够轻松构建可扩展的智能系统。无论是文本分析、计算机视觉还是异常检测,SynapseML都提供了简单而高效的解决方案。作为一个活跃的开源项目,SynapseML正在不断发展,为分布式机器学习领域带来更多创新。