基于英特尔® 人工智能技术的 Embold 赋能开发人员更快构建应用

  • 本文介绍了通过将面向英特尔® 架构优化的 TensorFlow 集成到常用的智能静态代码分析应用 Embold 中并配合调优 KMP_AFFINITY、KMP_BLOCKTIME、Scaling governor 和 OMP_NUM_THREADS 几个参数,最终将 GPT-2 训练速度提升了多达 2.25 倍。从而让解决方案能够得到快速部署并赋能开发人员更快更高效地构建应用。

在采用面向英特尔® 架构优化的 TensorFlow 的基础上,由人工智能驱动的 Embold 智能静态代码分析工具通过调优 GPT-2 模型进一步提升了性能。


数十年来,由规则驱动的静态代码分析已深入软件行业。在软件投入生产环境之前, 静态代码分析有助于在开发阶段识别潜在的软件质量问题。此类分析可检测设计问题, 并帮助改善程序的可维护性、可复用性、功能、运行时行为和可移植性。 

与此同时,新一代工具正在不断涌现,它们利用机器学习来减少对靠规则驱动的静态代码分析的依赖。英特尔® AI Builder 成员 Embold 利用其专有的人工智能 (AI) 推荐引擎来分析代码,并高效地返回丰富的洞察。


Embold 代码分析

对于操作系统 (OS) 开发过程中发生的日常软件错误,超过 50% 都曾经发生过并且已经有人修复。其中涉及了大量历史数据,开发人员可以利用这些数据来简化其复杂且耗时的重构与调试工作。 

Embold 是一款人工智能驱动的智能静态代码分析应用。该工具利用历史数据,将过去的漏洞和代码错误信息转化可以推进软件开发的知识来源。 

Embold 能够扫描用多种语言编写的代码,包括: 
• C、C++、Objective C、C# 
• Java、Python、JavaScript 
• Typescript、GO 等

为 Java 等语言生成的语言模型有助于在四 (4) 个关键领域执行分析:代码度量、设计问题、重复和代码问题。Embold 可以在软件投入使用之前就检测出设计问题,帮助改善代码。借助深度学习,Embold 能够从过去的提交历史中学习,识别反复出现的漏洞并提供修复方法。Embold 人工智能模型可帮助大型团队显著提高软件开发的效率。

                
Embold 利用英特尔® 人工智能技术进行的优化使训练速度提升多达 2.25 倍1  

Embold 的推荐引擎在 OpenAI 的生成式预训练转换器 2 (GPT-2) 模型上进行训练。GPT-2 是一种自回归语言模型,利用深度学习生成类似人类所写的文本2。 

英特尔的人工智能团队与 Embold 合作,使用 Embold 的 17 MB 训练数据集来优化应用的模型。团队在优化方案中集成了面向 英特尔® 架构优化的 TensorFlow,在第二代英特尔® 至强® 金牌 6252 处理器上进行训练,并运行了一次基线基准测试。然后再针对 GPT-2 124 M 参数模型进一步调优了以下参数。 
• KMP_AFFINITY = compact 
• KMP_BLOCKTIME = 0 
• Scaling governor = performance 
• OMP_NUM_THREADS = 48 

这些额外的参数优化为 Embold 工作负载带来了出色的结果。与基线优化配置相比,Embold 性能提升多达 2.25 倍。每步的训练时间保持稳定;因此,优化带来的增益将在训练模型收敛时保持不变。

训练速度的提升有利于加速解决方案部署。

在英特尔® 至强® 金牌 6252 CPU (2.10 GHz) 上使用面向英特尔® 架构优化的 TensorFlow 的 GPT-2 训练时间


结论
                
数十年来,静态代码分析工具已广泛应用于代码开发。人工智能 驱动的 Embold 分析器可帮助开发人员更快速、更高效地构建 应用。通过将面向英特尔® 架构优化的 TensorFlow 集成到 Embold 推荐引擎中并进行额外优化,与未优化的模型相比,训练运行速度提高多达 2.25 倍,使解决方案能够快速部署。

有关 Embold 的更多信息,请访问 embold.io 
有关英特尔® AI Builders 计划的更多信息,请访问 builders.intel.com/ai

                
                

Embold 是一款通用的静态代码分析器解决方案,能够识别并推荐有效的解决方案来优化代码质量。Embold 得分从四个维度进行计算,可指示哪些组件问题会对整体质量产生重大影响、需要优先解决。Embold 使用机器学习来丰富其静态代码分析功能。