MMLSpark 开源项目教程
SynapseML项目地址:https://gitcode.com/gh_mirrors/mm/mmlspark
项目介绍
MMLSpark(Microsoft Machine Learning for Apache Spark)是一个开源项目,旨在将许多深度学习和数据科学工具引入到Apache Spark生态系统中。MMLSpark通过无缝集成Spark机器学习管道与Microsoft Cognitive Toolkit(CNTK)、LightGBM和OpenCV等工具,使得构建高度可扩展的预测和分析模型变得更加容易。此外,MMLSpark还引入了新的网络功能,如HTTP on Spark项目,允许用户将任何Web服务嵌入到他们的SparkML模型中。
项目快速启动
环境准备
确保你的Spark集群满足以下要求:
- Spark 2.4+
- Scala 2.11
- Python 3.5+
安装MMLSpark
你可以通过以下命令安装MMLSpark:
pip install pyspark
pip install mmlspark
运行示例
使用以下命令启动一个预构建的Docker容器来运行示例:
docker run -it -p 8888:8888 -e ACCEPT_EULA=yes mcr.microsoft.com/mmlspark/release
在浏览器中访问http://localhost:8888/
,即可运行示例笔记本。
应用案例和最佳实践
使用Microsoft Cognitive Services
MMLSpark提供了易于使用的SparkML转换器,用于广泛的Microsoft Cognitive Services。以下是一个简单的示例,展示如何使用MMLSpark进行图像分析:
from mmlspark.cognitive import AnalyzeImage
from pyspark.ml import PipelineModel
# 定义图像URL
image_url = "https://example.com/image.jpg"
# 创建分析图像的转换器
analyzer = AnalyzeImage() \
.setSubscriptionKey("your_subscription_key") \
.setLocation("eastus") \
.setImageUrl(image_url) \
.setOutputCol("analysis_results") \
.setVisualFeatures(["Categories", "Description", "Faces", "Tags"])
# 创建数据帧
df = spark.createDataFrame([[image_url]], ["image_url"])
# 运行分析
result = analyzer.transform(df).collect()
# 打印结果
print(result[0].analysis_results)
使用LightGBM进行模型训练
MMLSpark还支持使用LightGBM进行梯度提升机器的训练。以下是一个简单的示例:
from mmlspark.lightgbm import LightGBMClassifier
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.evaluation import BinaryClassificationEvaluator
# 加载数据
data = spark.read.format("libsvm").load("data/sample_libsvm_data.txt")
# 创建特征向量
assembler = VectorAssembler(inputCols=data.columns[:-1], outputCol="features")
# 创建LightGBM分类器
lgbm = LightGBMClassifier(featuresCol="features", labelCol="label")
# 训练模型
model = lgbm.fit(assembler.transform(data))
# 评估模型
evaluator = BinaryClassificationEvaluator()
print("Test Area Under ROC: " + str(evaluator.evaluate(model.transform(assembler.transform(data)))))
典型生态项目
Vowpal Wabbit on Spark
Vowpal Wabbit(VW)是一个快速的核心学习系统,MMLSpark将其集成到Spark中,使得大规模的在线学习和特征哈希变得更加容易。
Cognitive Services on Spark
通过MMLSpark,你可以将Microsoft的认知服务(如计算机视觉、情感分析等)集成到你的SparkML管道中,从而在现有SparkML管道中利用前所未有的规模。
LightGBM on Spark
LightGBM是一个高效的梯度提升框架,MMLSpark将其集成到Spark中,使得在Spark应用程序中训练深度学习模型变得更加容易。
Spark Serving
Spark Serving项目使得任何Spark计算都可以作为具有亚毫秒级延迟的Web服务进行部署,从而实现高吞吐量的生产级部署。
通过这些生态项目,MMLSpark不仅增强了Spark在机器学习方面的能力,还扩展了其在网络服务和深度学习方面的应用。