SynapseML(以前名为MMLSpark)是一个开源库,简化了大规模机器学习(ML)管道的创建。SynapseML提供了简单、可组合和可分布的API,适用于各种不同的机器学习任务,例如文本分析、视觉、异常检测等。SynapseML基于Apache Spark分布式计算框架,并与SparkML/MLLib库共享相同的API,使您能够无缝地将SynapseML模型嵌入到现有的Apache Spark工作流中。
通过SynapseML,您可以构建可扩展和智能的系统,以解决诸如异常检测、计算机视觉、深度学习、文本分析等领域的挑战。SynapseML能够在单节点、多节点和可弹性调整大小的计算机集群上训练和评估模型,从而使您在不浪费资源的情况下扩展工作。SynapseML可在Python、R、Scala、Java和.NET中使用。此外,其API抽象了各种数据库、文件系统和云数据存储,以简化实验,不论数据位于何处。
SynapseML需要Scala 2.12、Spark 3.4+和Python 3.8+。
目录
特点
Spark上的Vowpal Wabbit | 大数据的认知服务 | Spark上的LightGBM | Spark Serving |
快速、稀疏且有效的文本分析 | 在现有SparkML管道中以前所未有的规模利用Microsoft的认知服务 | 利用LightGBM训练梯度提升机器 | 将任何Spark计算作为具有毫秒级延迟的Web服务进行服务 |
Spark上的HTTP | Spark上的ONNX | 负责的AI | Spark绑定的自动生成 |
Spark和HTTP协议之间的集成,支持分布式微服务编排 | Spark上的分布式和硬件加速模型推理 | 理解“黑盒”模型并测量数据集偏差 | 自动生成PySpark和SparklyR的Spark绑定 |
Spark上的Isolation Forest | CyberML | Conditional KNN |
分布式非线性异常检测 | 网络安全的机器学习工具 | 具有条件查询的可扩展KNN模型 |
文档和示例
有关快速入门、文档、演示和示例,请参阅我们的网站。
安装和设置
首先选择您要安装SynapseML的平台:
- Microsoft Fabric
- Synapse Analytics
- Databricks
- Python Standalone
- Spark Submit
- SBT
- Apache Livy 和 HDInsight
- Docker
- R
- 从源代码构建
Microsoft Fabric
在Microsoft Fabric笔记本中,SynapseML已经安装。要更改版本,请在笔记本的第一个单元格中放置以下内容。
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:<THE_SYNAPSEML_VERSION_YOU_WANT>",
"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"
}
}
Synapse Analytics
在Azure Synapse笔记本中,请在笔记本的第一个单元格中放置以下内容。
- 对于Spark 3.4 池:
%%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"
}
}
- 对于Spark 3.3 池:
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:0.11.4-spark3.3",
"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"
}
}
要在池级别而不是笔记本级别进行安装,请将上述spark属性添加到池配置中。
Databricks
要在Databricks云中安装SynapseML,请在您的工作区中创建一个新的来自Maven坐标的库。
对于坐标,使用:com.microsoft.azure:synapseml_2.12:1.0.4
,并使用解析器:https://mmlspark.azureedge.net/maven
。确保将此库附加到您的目标集群。
最后,确保您的Spark集群至少有Spark 3.2和Scala 2.12。如果遇到Netty依赖问题,请使用DBR 10.1。
您可以在Scala和PySpark笔记本中使用SynapseML。要通过示例笔记本开始,导入以下Databricks归档:
https://mmlspark.blob.core.windows.net/dbcs/SynapseMLExamplesv1.0.4.dbc
Python Standalone
要在Python(或Conda)安装中试用SynapseML,可以通过pip install pyspark
安装Spark。然后可以像上面的示例一样使用pyspark
或从python中使用:
from synapse.ml.core.platform import unified_prologue
unified_prologue()
from synapse.ml.lightgbm import *
from synapse.ml.vw import *
from synapse.ml.onnx import *
from synapse.ml.cognitive import *
from synapse.ml.automl import *
from synapse.ml.cyber import *
from pyspark.ml import PipelineModel
from synapse.ml.train import compute_model_statistics, load_model
# Your code here
import pyspark
spark = pyspark.sql.SparkSession.builder.appName("MyApp") \
.config("spark.jars.packages", "com.microsoft.azure:synapseml_2.12:1.0.4") \
.getOrCreate()
import synapse.ml
提交Spark作业
可以通过 --packages
选项在现有的Spark集群上方便地安装SynapseML,示例如下:
spark-shell --packages com.microsoft.azure:synapseml_2.12:1.0.4
pyspark --packages com.microsoft.azure:synapseml_2.12:1.0.4
spark-submit --packages com.microsoft.azure:synapseml_2.12:1.0.4 MyApp.jar
使用SBT
如果您正在构建一个Scala的Spark应用程序,请将以下几行添加到您的 build.sbt
文件中:
libraryDependencies += "com.microsoft.azure" % "synapseml_2.12" % "1.0.4"
使用Apache Livy和HDInsight
要在Apache Livy提供的Jupyter笔记本中安装SynapseML,可以使用以下配置命令。在执行此配置单元后,您需要启动一个新会话。
由于Livy 0.5的当前问题,可能需要从库中排除某些包。
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:1.0.4",
"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"
}
}
使用Docker
评估SynapseML最简单的方法是通过我们预构建的Docker容器。要执行此操作,请运行以下命令:
docker run -it -p 8888:8888 -e ACCEPT_EULA=yes mcr.microsoft.com/mmlspark/release jupyter notebook
在您的网络浏览器中打开 http://localhost:8888/ 以运行示例笔记本。有关Docker使用的详细信息,请参见文档。
要阅读使用docker镜像的EULA,请运行
docker run -it -p 8888:8888 mcr.microsoft.com/mmlspark/release eula
使用R
要使用R自动生成的包装器试用SynapseML,请参阅我们的说明。注意:此功能仍在开发中,可能缺少一些必要的自定义包装器。
从源代码构建
SynapseML最近过渡到一个新的构建基础设施。 有关详细的开发者文档,请参阅开发者自述。
如果您是现有的synapsemldeveloper,您将需要重新配置您的开发环境。我们现在支持平台独立开发,并更好地与IntelliJ和SBT集成。 如果遇到问题,请通过我们的支持电子邮件联系我们!
论文
了解更多
-
访问我们的网站。
-
观看我们在Spark+AI Summit 2019、Spark+AI European Summit 2018、Spark+AI Summit 2018和Spark Summit的SynapseML上的主题演讲。
-
了解SynapseML如何用于帮助濒危物种。
-
探索我们与MET和MIT合作的生成对抗艺术。
-
探索我们与Apache Spark合作的图像分析。
贡献与反馈
该项目采用了Microsoft开源行为准则。有关更多信息,请参见行为准则常见问题或联系opencode@microsoft.com以获取更多问题或评论。
请参阅 CONTRIBUTING.md 了解贡献指南。
要提供反馈和/或报告问题,请打开一个GitHub Issue。
其他相关项目
Apache®、Apache Spark和Spark®是美国和/或其他国家的Apache软件基金会的注册商标或商标。