专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  【Figure人形机器人在宝马汽车工厂自主工 ... ·  昨天  
宝玉xp  ·  接之前 v0.dev 提示词的分析 ... ·  2 天前  
宝玉xp  ·  推荐阅读:《AI贴纸生成网站 ... ·  4 天前  
宝玉xp  ·  随着 AI 编程能力提升和 AI ... ·  5 天前  
量子位  ·  国产4o大模型,秒懂国风李子柒 ·  5 天前  
51好读  ›  专栏  ›  机器学习研究会

【干货】大规模机器学习的编程技术、计算模型以及Xgboost和MXNet案例

机器学习研究会  · 公众号  · AI  · 2017-05-23 19:52

正文



点击上方“机器学习研究会”可以订阅哦
摘要
 

转自:大数据杂谈

现在,机器学习的趋势从传统方法中的简单模型 + 少量数据(人工标注样本),到简单模型 + 海量数据(比如基于逻辑回归的广告点击率预测),再发展到现在复杂模型 + 海量数据(比如深度学习 ImageNet 图像识别,基于 DNN 的广告点击率预测)。

总结下在工业届常会用到的大规模机器学习的场景:

这次分享从这 3 部分展开:

  1. 并行计算编程技术

  • 向量化

  • Openmp

  • GPU

  • mpi

  • 并行计算模型

    • BSP

    • SSP

    • ASP

    • Parameter Server

  • 并行计算案例

    • Xgboost 的分布式库 Rabit

    • Mxnet 的分布式库 ps-lite


    并行计算编程技术  


    首选提到并行编程技术,这是大规模机器学习的工程基础。


       向量化


    向量化计算是一种特殊的并行计算的方式,相比于一般程序在同一时间只执行一个操作的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组 / 向量。

    在 X86 体系架构的 CPU 上,主要的向量化编程技术是 SSE 和 AVX。Intel 公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强 CPU 浮点运算的能力。现住主流的编译器 GCC 和 Visual Studio 提供了对 SSE 指令集的编程支持,从而允许用户在 C++ 代码中不用编写汇编代码就可直接使用 SSE 指令的功能。Intel SSE 指令集支持的处理器有 16 个 128 位的寄存器,每一个寄存器可以存放 4 个(32 位)单精度的浮点数。SSE 同时提供了一个指令集,其中的指令可以允许把浮点数加载到这些 128 位的寄存器之中,这些数就可以在这些寄存器中进行算术逻辑运算,然后把结果放回内存。AVX 与 SSE 类似,AVX 将所有 16 个 128 寄存器扩充为 256 位寄存器,从而支持 256 位的矢量计算,理想状态下,浮点性能 AVX 最高能达到 SSE 的 2 倍水平。移动设备上广泛采用的 ARM 架构,ARM 向量指令 Neon 提供 16 个长度位 128 位的向量寄存器。

    简单点说:SSE 指令集的加速比为 4 倍,AVX 可以获取 8 倍加速比。

    使用也很简单。

    AVX 指令集编程示例:

        for(i=0; i

    这是一个数组求和的加速例子。

    现在主流编译器 GCC 等都支持。

    其次是大家最熟悉的多线程编程技术。

    UNIX/Linux 中的 pthread, Windows 环境下的 WinThread。但是相对于机器学习并行来说,一方面采用多线程编程技术,开发成本较高,而且需要妥善处理同步互斥等问题;另一方面,不同平台中使用多线程编程库是不一样的,这样也会造成移植性问题。


    原文链接:

    https://mp.weixin.qq.com/s/WPYFWl-uVMTg3McfodJp_A

    “完整内容”请点击【阅读原文】
    ↓↓↓