当前位置: 首页 > news >正文

(五)、深度学习框架源码编译

1、源码构建与预构建:

源码构建:
源码构建是通过获取软件的源代码,然后在本地编译生成可执行程序或库文件的过程。这种方法允许根据特定需求进行配置和优化,但可能需要较长的时间和较大的资源来编译源代码。
预构建:
预构建是通过从开发者或官方网站下载预先编译好的可执行程序或库文件,然后在本地使用它们的过程。这种方法省去了编译的时间和工作,通常更方便。然而,预构建版本可能没有完全针对特定需求进行优化。
源码构建的优缺点:
优点:
1.可以根据特定需求进行配置、优化和修改。

2.可以确保编译的二进制与系统和需求完全匹配。

3.可以进行调试和错误跟踪,有助于自定义和定制。

缺点:
1.需要较长的编译时间和系统资源。
2.对于不熟悉编译过程的用户来说可能较为复杂。
3.编译过程可能会受到依赖项的影响,需要处理依赖项问题。

2、Tensorflow源代码编译安装

TensorFlowi源码构建基本流程:
1、安装依赖:安装构建TensorFlow所需的各种依赖项,包括Python、Bazel构建工具、CUDA、cuDNN、TensorRT等。这些依赖项可能因系统和配置而有所不同。
2、配置编译:在TensorFlowi源码目录中,运行配置脚本以配置编译选项。
3、构建:用Bazelt构建TensorFlow。
4、生成Wheel包:如果希望将TensorFlow打包成Pythonf的Wheelt格式,以便于分发和安装。
5、运行测试(可选):可以运行TensorFlow的单元测试和集成测试,以确保构建的版本没有问题。

TensorFlow-安装依赖、编译环境:

确保环境中,已经安装python、pip等工具
        pip install -U --user pip numpy wheel
        pip install -U--user keras_preprocessing --no-deps

numpy是一个开源的数值计算库,提供了丰富的多维数组和矩阵操作功能,以及数学、逻辑、傅里叶变换等数值计算工具。
wheel是Python的一个二进制包格式,旨在加速包的安装。是一种预构建的软件包格式,可以包含Python模块的代码、依赖项和元数据,以便于分发和安装。
keras_preprocessing是TensorFlow的一个重要子模块,提供了许多用于数据预处理和增强的工具,特别适用于在深度学习任务中准备数据集。


TensorFlow-编译工具bazel
Bazel是一个由Google开发的开源构建工具,旨在支持大型项目的高效构建、测试和部署。它特别适用于构建复杂的软件系统,具有高度的可扩展性和性能优势。Bazel支持多种编程语言,并在TensorFlow等许多大型项目中得到广泛应用。
■构建速度和缓存:使用了增量构建和缓存机制,只编译已更改的部分,从而显著加快构建过程。Bazel还可以共享构建缓存,以避免重复编译相同的依赖项。
■多语言支持:包括但不限于Java、C++、Python、Go、Rust等。这使得可以在一个项目中混合使用不同的语言,而无需为每种语言使用不同的构建工具。
■高度模块化:将项目拆分为小的、可重用的模块,以提高代码的可维护性和可测试性。每个模块都可以拥有自己的构建规侧和依赖项。
■声明式构建:使用BUILD文件来声明构建规则和依赖关系。这种声明式的构建方法使构建过程更加清晰和可管理。
■平台无关性:可以在不同的操作系统上运行,包括Linux、macOS和Windows。

详细使用方法可以参考:https:/blog.gmem.cc/bazel-study-note

 

3、pytorch 源代码编译安装

1、环境准备:

安装 Python:确保的系统中安装了 Python,建议使用支持的版本(通常是 Python 3.7+)。

安装依赖项:如 CMake、NumPy、Ninja 等。可以根据官方文档安装这些依赖项。

2、更新子模块:源代码中可能包含子模块(submodules),往往需要使用以下命令更新子模块才能正常编译:

        git submodule update --init --recursive

3、配置编译选项:(可使用 cmake -DCMAKE_INSTALL_PREFIX=<install_dir> 来指定安装目录)。

                mkdir build

                cd build

                cmake ..

4、使用make命令进行编译,make install命令进行安装。

5、运行测试:

在 test 目录下,可以使用以下命令来运行测试:

        python run_test.py

这将运行所有的测试套件,包括单元测试、集成测试等。如果需要指定特定的测试模块或测试用例,可以使用命令行参数来过滤测试,

例如:

        python run_test.py test_torch.py

将只运行与 test_torch.py 相关的测试。

在测试运行完成后,成功的测试将显示为 "OK",而失败的测试将显示详细的错误信息。

4、caffe源代码编译安装

1、环境准备(这些基本都可以从conda里面安装):

        sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev 

        libhdf5-serial-dev protobuf-compiler 

        sudo apt-get install --no-install-recommends libboost-all-dev

        sudo apt-get install python-dev

        sudo apt-get install libatlas-base-dev

        sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

        sudo apt-get install python-opencv

2、修改caffe下文件Makefile.config

        CPU 和 GPU 支持: 可以通过设置是否启用 CPU 或 GPU 支持来决定构建 Caffe 时是否使用CPU 或 GPU 运算。这通常涉及 USE_CUDNN、USE_NCCL、CPU_ONLY 等选项。

        CUDA 和 cuDNN 路径: 如果启用了 GPU 支持,需要指定 CUDA 和 cuDNN 的路径。

        BLAS 库: 可以选择使用不同的 BLAS 库,如 OpenBLAS、MKL 或 ATLAS。 

        Python 路径: 需要指定与 Caffe 集成的 Python 版本和路径。

3、修改caffe下文件Makefile

        1.opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

        后面加入 opencv_imgcodecs

        2. 找到LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

        更改最后两项为:

        LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl 

        hdf5_serial

4、编译与测试

        make all

        Make test

        make runtest

5、深度学习框架常用模型仓库

TensorFlow: https://github.com/tensorflow/models

TensorFlow Model Garden 是 TensorFlow 团队维护的一个开源项目,旨在为机器学习社区提供一系列预训练模型、工具、示例和最佳实践,以加速模型开发和研究。这个项目汇集了各种不同类型的模型,涵盖了计算机视觉、自然语言处理、语音识别等多个领域,帮助开发者快速构建和训练自己的模型。

预训练模型: Model Garden 包含了多个预训练模型,包括 TensorFlow 官方发布的模型,以及社区贡献的模型。这些模型可以用作迁移学习的起点,或者可以在特定任务上微调。

模型库: Model Garden 提供了一个模型库,用于查看各种模型的代码、配置文件和文档。这些模型可以帮助开发者了解模型的结构和使用方法。

最佳实践: TensorFlow 团队会分享一些模型开发和训练的最佳实践,帮助开发者避免常见的陷阱和问题。

相关文章:

(五)、深度学习框架源码编译

1、源码构建与预构建&#xff1a; 源码构建&#xff1a; 源码构建是通过获取软件的源代码&#xff0c;然后在本地编译生成可执行程序或库文件的过程。这种方法允许根据特定需求进行配置和优化&#xff0c;但可能需要较长的时间和较大的资源来编译源代码。 预构建&#xff1a; 预…...

迈向通用听觉人工智能!清华电子系、火山语音携手推出认知导向的听觉大语言模型SALMONN

日前&#xff0c;清华大学电子工程系与火山语音团队携手合作&#xff0c;推出认知导向的开源听觉大语言模型SALMONN (Speech Audio Language Music Open Neural Network)。 大语言模型 SALMONN LOGO 相较于仅仅支持语音输入或非语音音频输入的其他大模型&#xff0c;SALMONN对…...

NOIP 2015 扫雷(mine)

扫雷&#xff08;mine&#xff09; 说明 扫雷游戏是一款十分经典的单机小游戏。在 n行 m 列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩家翻开一个非地雷格时&#xff0c;该格将会…...

elaticsearch(3)

整合springboot 1.整合依赖 注意依赖版本和安装的版本一致 <properties> <java.version>1.8</java.version> <!-- 统一版本 --> <elasticsearch.version>7.6.1</elasticsearch.version> </properties> 导入elastics…...

DevOps系列文章 之 Gitlab+Docker自动部署SpringBoot

1.环境要求 以下服务器的操作系统均为Centos7 服务器A&#xff1a;Gitlab服务器B&#xff1a;GitlabRunner、Docker、docker-compose、Java1.8、maven3.6.3、git ps&#xff1a;这里可以把服务器B的GitlabRunner、Java1.8、maven3.6.3、git单独提出来&#xff0c;独立部署&a…...

React Native 列表组件基础知识

ScrollView 组件 ScrollView组件是一个容器滚动组件&#xff0c;当容器超出指定宽高时就可以进行滚动交互。 ScrollView组件是一次性渲染所有的 React 子组件&#xff0c;这在性能上是比较差的&#xff0c;所以不建议当列表特别长的时候使用此组件。 接下来列举几个常用的一…...

操作系统的体系结构、内核、虚拟机

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 操作系统结构 一、操作系统体系结构1.1操作系统的内核1.1.…...

【C++】vector的基本用法

vector是动态数组的同义词 一、vector对象带参数构造 1.vector<int>a(a,a5);//左闭右开 2.vector<int>b&#xff08;n&#xff0c;z&#xff09;&#xff1b;n个z 3.vector<int>c(a);//拷贝 二、动态数组可以整体赋值 vector<int>vec; vector&l…...

SSM——用户、角色、权限操作

1. 数据库与表结构 1.1 用户表 1.1.1 用户表信息描述 users 1.1.2 sql语句 CREATE TABLE users( id varchar2(32) default SYS_GUID() PRIMARY KEY, email VARCHAR2(50) UNIQUE NOT NULL, username VARCHAR2(50), PASSWORD VARCHAR2(50), phoneNum VARCHAR2(20), STATUS INT…...

UI界面设置

文章目录 1. 修改 share.html 内容如下&#xff1a;2. 修改 html 文件格式为 utf-83.保存&#xff0c;运行程序4. 访问页面 1. 修改 share.html 内容如下&#xff1a; <!DOCTYPE html><html> <head><meta charset"utf-8"><title>1v1屏…...

论文学习——PixelSNAIL:An Improved Autoregressive Geenrative Model

文章目录 引言论文翻译Abstract问题 Introduction第一部分问题 第二部分问题 Model Architecture网络结构第一部分问题第二部分问题 Experiments实验问题 Conclusion结论问题 总结参考 引言 这篇文章&#xff0c;是《PixelSNAIL:An Improved Autoregressive Geenrative Model》…...

mySQL 视图 VIEW

简化版的创建视图 create view 视图名 as select col ...coln from 表create view 视图名&#xff08;依次别名&#xff09; as select col ...coln from 表create view 视图名 as select col “别名1”&#xff0c;。。。col "别名n" from 表show tab…...

「UG/NX」Block UI 曲线收集器CurveCollector

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#...

微信小程序:函数节流与函数防抖

目录 问题引入&#xff1a; 定义 解决方案&#xff1a;函数节流 一、案例举例 1.页面展示 2.search.wxml标签展示 3.search.js展示 4.结果展示 二、函数节流解决问题 1.函数 2.实例应用 三、函数防抖解决问题 1.函数 2.原理 3.应用场景 4.应用实例 总结 问题引入…...

Mathematica(42)-计算N个数值的和

比如&#xff0c;我们要用Mathematica求得到下面的式子&#xff1a; 这就需要用到一个函数&#xff1a;Sum 具体地&#xff0c;Sum函数的使用形式如下&#xff1a; 因此&#xff0c;按照公式就可以得到下面的结果&#xff1a; 如果&#xff0c;我们想要将求和号也加进去&#…...

安装和配置 Ansible

安装和配置 Ansible 按照下方所述&#xff0c;在控制节点 control.area12.example.com 上安装和配置 Ansible&#xff1a; 安装所需的软件包 创建名为 /home/curtis/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; node1 是 dev 主机组的成员 node2 …...

电脑系统重装日记

重装原因 电脑C盘几乎爆炸故重装系统一清二白 此片原因 记录重装过程&#xff0c;强调一些要注意的点&#xff0c;以防日后重装。 重装过程 1.清空电脑文件后重启&#xff0c;电脑冒蓝光&#xff0c;一直蓝屏反复重启&#xff0c;故只能重装系统以解难题。 2.准备一个U盘&…...

通讯协议044——全网独有的OPC HDA知识一之聚合(十二)持续坏值时间

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…...

Docker:Windows container和Linux container

点击"Switch to Windows containers"菜单时&#xff1a; 提示 然后 实际上是运行&#xff1a;com.docker.admin.exe start-service...

excel提示更新外部引用文件 这个提示能手动禁用

是的&#xff0c;你可以手动禁用 Excel 中的更新外部引用文件的提示。这些步骤可能因 Excel 版本而有所不同&#xff0c;以下是一般的步骤&#xff1a; 1. **打开 Excel**&#xff1a; 2. **进入“选项”**&#xff1a; - 在 Excel 中&#xff0c;点击顶部菜单中的“文件”…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...