ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

在 Linux CPU 上通过 Maven 引入 Apache MXNet Scala 包:依赖坐标、环境搭建与源码级原理

在 Linux CPU 上通过 Maven 引入 Apache MXNet Scala 包:依赖坐标、环境搭建与源码级原理 在 Linux CPU 上通过 Maven 引入 Apache MXNet Scala 包依赖坐标、环境搭建与源码级原理【免费下载链接】mxnetLightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more项目地址: https://gitcode.com/gh_mirrors/mxnet1/mxnet本指南聚焦于 Apache MXNet 的 Scala 语言绑定在Linux x86-64 CPU环境下的安装与使用核心内容来自仓库内 Linux Scala CPU 安装片段 及其配套的 Scala 完整安装指南。读完本文你将掌握 MXNet Scala 包的 Maven 依赖坐标规则、Ubuntu/macOS 环境准备步骤、官方 Demo 验证方法、从源码构建的替代路径以及 Scala 解释器的交互式用法。Maven 依赖引入一条 dependency 完成接入MXNet 为 Scala 用户提供了预编译的 Maven 制品在 Linux CPU 机器上只需要在项目的pom.xml中加入如下依赖即可将 MXNet 引入 Scala 项目dependency groupIdorg.apache.mxnet/groupId artifactIdmxnet-full_2.11-linux-x86_64-cpu/artifactId /dependency这个 artifactId 并非随意命名它完整编码了三条关键信息理解它有助于你按需切换平台与计算后端名称片段含义mxnet-full打包了完整运行时含 Scala API、原生库与推理接口的聚合制品对应仓库中 assembly 模块_2.11Scala 二进制版本。当前仓库仅支持 Scala 2.11见 scala-package/pom.xml 中scala.binary.version2.11、scala.version2.11.8的属性定义linux-x86_64目标平台对应osx-x86_64、linux-x86_64等平台 profilecpu计算后端 flavorcpu或gpu在 scala-package/pom.xml 中可以确认父 POM 还通过maven-enforcer-plugin的bannedDependencies规则显式排除了*_2.12与*_2.10依赖进一步印证了当前版本只面向 Scala 2.11 的事实。若需要指定版本可以在dependency块内显式加入version标签例如使用1.2.0dependency groupIdorg.apache.mxnet/groupId artifactIdmxnet-full_2.11-linux-x86_64-cpu/artifactId version1.2.0/version /dependency不写版本号时Maven 将解析并使用该坐标下可用的最新版本。环境准备安装依赖与工具链在引入依赖之前需要先安装 Java、Maven 等基础工具。官方安装指南提供了 macOS 与 Ubuntu 两套步骤其中Ubuntu 是 Linux CPU 场景下的推荐路径。Ubuntu 步骤使用仓库 CI 中维护的安装脚本自动安装 Maven 及其依赖wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_core.sh wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_scala.sh chmod x ubuntu_core.sh chmod x ubuntu_scala.sh sudo ./ubuntu_core.sh sudo ./ubuntu_scala.shubuntu_core.sh负责基础编译与运行环境ubuntu_scala.sh负责 Scala/Java 工具链。这两个脚本与仓库内的 ci/docker/install/ 目录一脉相承是 CI 容器镜像中反复验证过的安装流程。macOS 步骤参考brew update brew tap caskroom/versions brew cask install java8 brew install opencv brew install maven用官方 Demo 验证安装环境就绪后推荐直接跑通仓库自带的 MXNet-Scala 示例工程来做安装验证。示例位于 scala-package/mxnet-demo/scala-demo包含HelloWorld与ImageClassificationExample两个 Scala 示例。构建示例工程mvn package示例工程的 pom.xml 会自动根据当前操作系统激活平台 profile在 Linux 上默认解析mxnet.profilelinux-x86_64-cpu依赖版本区间为[1.4.0, )即自动选用 1.4.0 及以上的最新发布版。如果使用 GPU需要显式指定 profilemvn package -Dmxnet.profilelinux-x86_64-gpu运行 HelloWorld 示例java -cp $CLASSPATH sample.HelloWorldHelloWorld.scala 展示了最基本的用法——通过org.apache.mxnet._导入 MXNet API用NDArray.ones(2, 3)创建张量并打印其 shapepackage sample import org.apache.mxnet._ object HelloWorld { def main(args: Array[String]): Unit { println(hello World) val arr NDArray.ones(2, 3) println(arr.shape) } }示例工程也提供了bin/demo.sh脚本可以自动组装 classpath 并运行示例运行图像分类示例使用bash bin/run_im.sh该示例会自动下载 ImageNet 训练的 resnet18 模型并对图片做推理输出 Top-5 分类概率。若在 GPU 上测试设置环境变量export SCALA_TEST_ON_GPU1即可。备选方案从源码构建 Scala 包对于无法访问预编译制品或需要定制构建的场景也可以在本地从源码构建。官方推荐优先使用 Maven 制品源码构建路径仅作参考。如果已经通过 CMake 从源码构建过 MXNet请先执行make clean再继续随后在仓库的scala-package目录下执行mvn install这条命令会按 scala-package/pom.xml 定义的模块顺序init、native、core、infer、assembly等 11 个模块完成 Scala 包的编译、测试与本地安装。值得注意的是构建过程中的flavor 自动检测在 Linux 平台上exec-maven-plugin会执行ldd lib/libmxnet.so | grep libcuda来检测本地库是否链接了 CUDA从而自动决定产物是cpu还是gpuflavor见 scala-package/pom.xml。因此只要本机libmxnet.so是 CPU 版本即使不显式指定构建出的也是 CPU 制品。使用 Scala 解释器交互式运行安装完依赖后还可以用 Scala REPL 交互式体验 MXNet。安装解释器Ubuntusudo apt-get install scalamacOSbrew install scala2.11安装后运行scala -version确认版本为 2.11.x当前仓库仅支持 Scala 2.11。启动解释器先下载对应平台的 mxnet jar可从 Maven 中央仓库获取mxnet-full_2.11-linux-x86_64-cpu等制品或按上文方式从源码构建然后指定 classpath 启动scala -cp {path/to/mxnet-full_2.11-os-version.jar}常见问题如果在解释器中遇到NumberFormatException可先执行export TERMxterm-color再启动解释器。深入理解mxnet-full 聚合制品的构成你引入的mxnet-full_2.11-linux-x86_64-cpu并非单一源码模块而是 assembly 模块 通过maven-assembly-plugin聚合而成的完整发行包其内部组合了mxnet-coreScala 核心 APINDArray、Symbol、Executor 等libmxnet-scalaJNI 原生库类型根据平台 profile 决定Linux 为somacOS 为jnilibmxnet-infer基于org.apache.mxnet.infer的图像分类等推理 APIImageClassificationExample 即基于此接口。平台相关属性platform、libtype、flavor在父 POM 的激活 profile 中定义scala-package/pom.xml这也是 Maven 中央仓库中能够同时发布linux-x86_64-cpu、linux-x86_64-gpu、osx-x86_64-cpu等多种坐标制品的原因。文档与资源Scala 完整安装指南本主题的官方权威文档包含 Maven、源码构建、解释器三大章节Linux Scala GPU 安装片段GPU 场景的依赖坐标将 artifactId 中的cpu替换为gpu即可scala-package 目录全部 Scala 源码、示例与构建配置scala-package/mxnet-demo可直接运行的官方示例工程含 Java 与 Scala 两个版本。注意事项当前仓库仅支持Scala 2.11请勿混用 2.10/2.12 的依赖Linux 下若遇到 OpenCV 相关问题1.2.0 及以上版本包需要 OpenCV 3.4可参考 scala-demo/README.md 中的libopencv-imgcodecs3.4安装说明Windows 平台目前暂不支持通过官方文档路径安装 Scala 包如果使用 IntelliJ 等 IDE可以优先参考仓库文档中的 IntelliJ 集成教程见 scala_setup.md而非纯命令行流程。【免费下载链接】mxnetLightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more项目地址: https://gitcode.com/gh_mirrors/mxnet1/mxnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表