当前位置: 首页 > 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;点击顶部菜单中的“文件”…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...