英特尔生态的深度学习科研环境配置-A770为例

之前发过在Intel A770 GPU安装oneAPI的教程,但那个方法是用于WSL上。总所周知,在WSL使用显卡会有性能损失的。而当初买这台机器的时候我不在场,所以我这几天刚好有空把机器给重装成Ubuntu了。本篇不限于安装oneAPI,因为在英特尔的生态之下,oneAPI只是一个基座。

本篇集大成者,为使用英特尔生态的人提供便利。

文章目录

  • U盘重装Ubuntu
  • 硬盘管理
  • 驱动
    • 加官方源
    • Compute, Media, and Display runtimes
    • 安装开发包
    • 安装dkms
    • 验证
  • xpu-smi
  • oneAPI安装
  • Miniconda3
  • Intel版pytorch
  • BigDL-LLM安装
  • frp内网穿透

U盘重装Ubuntu

如果大家也是重装,请大家注意备份资源。

首先从官网或者国内镜像,例如清华源下载最新的LTS,然后准备一个16G左右的U盘,使用Rufus把ISO格式的系统镜像文件制作成可引导的 USB 启动安装盘,启动软件后插入U盘会自动检测,你只需要把引导类型选择为你的ISO镜像位置即可。

当制作完毕后,重启进入BIOS(不知道自己机器是什么的,建议F1-F12,甚至Delete, Insert都按按,开机后就要疯狂点,这一步我没想到是最麻烦的,我甚至百度查了很多快捷键进入都没有效果,直到我乱点上面的键之后才顺利进入BIOS,然后大家可以找找Boot选择或者首页,注意里面是可以鼠标和键盘移动的!!!,最后设置自己U盘为第一选择项,Save启动,记住要保存,不然像我这种乱点进入BIOS的,又要一次乱点了。)

关于Ubuntu的安装过程就略了…不是本篇的重点。

硬盘管理

安装之后的Ubuntu只有系统盘被格式化了,而其他盘却还是之前的windows盘,你需要重新挂载和格式化文件系统。

首先使用df -h看看你有什么盘,例如/dev/sda1,然后使用sudo mkfs -t ext4 /dev/sda1进行格式化,如果你在windows进行分区过,那么你会看到/dev/sda1/dev/sda2之类的盘符,这时候你可以使用sudo fdisk /dev/sda进行分区的合并,记得分区要保留1个,别都删完了。
然后mkdir创建好挂载的目录,例如data0,最后使用mount /dev/sda1 /data0进行挂载。
为了防止重启失效,还需要进一步写入文件sudo vim /etc/fstab进行自动挂载:

/dev/sda1       /data0  ext4    defaults        0       0
/dev/sdb1       /data1  ext4    defaults        0       0

中间的空格,我建议直接按Tab键就行了。

驱动

有一篇简书文章介绍了如何安装锐炫独立显卡的驱动程序,但是很奇怪的是,这篇文章初次开机后打开设置的About界面中的Graphics是llvmpipe,可是我安装的Ubuntu 22.04.4 LTS之后,系统是可以正常显示出Intel A770 GPU的。

我当时也非常害怕,所以我还是按照文档重新安装了,如果有新安装的伙伴看到也是这样,不妨直接看下面的验证看看能不能输出,让我知道是不是现在系统自带驱动了,然后来文章底下和我说说吧。
如果你要进行安装,这里我建议不要参考我刚刚发的文章和官网,就看我这篇,因为看文档会有个内核版本问题,而我没有根据文档成功了
具体步骤如下:

加官方源

wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
  sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
  sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
sudo apt update

Compute, Media, and Display runtimes

sudo apt install -y \
  intel-opencl-icd intel-level-zero-gpu level-zero \
  intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
  libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
  libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
  mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
sudo dpkg --add-architecture i386 
sudo apt update
sudo apt install  -y \
  udev mesa-va-drivers:i386 mesa-common-dev:i386 mesa-vulkan-drivers:i386 \
  libd3dadapter9-mesa-dev:i386 libegl1-mesa:i386 libegl1-mesa-dev:i386 \
  libgbm-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev:i386 \
  libgles2-mesa:i386 libgles2-mesa-dev:i386 libosmesa6:i386 \
  libosmesa6-dev:i386 libwayland-egl1-mesa:i386 libxatracker2:i386 \
  libxatracker-dev:i386 mesa-vdpau-drivers:i386 libva-x11-2:i386

i386 软件包不安装,别想在这里玩帕鲁了!

安装开发包

sudo apt install -y \
  libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev

安装dkms

这里官网文档以及上面的文章都要大家安装5.19 通用内核,实际上不用,我的内核是6.5.0-25-generic也能成功。所以直接执行安装dkms。

sudo apt update

sudo apt -y install \
    gawk \
    dkms \
    linux-headers-$(uname -r) \
    libc6-dev

sudo reboot

到这里,驱动都安装完了。

你可以使用下面步骤进行验证。

验证

hwinfo --display

如果能和我下面的输出差不多,那么恭喜你安装成功了!
hwinfo.png

xpu-smi

英伟尔有nvidia-smi,AMD有rocm-smi,英特尔也有自己的xpu-smi。

sudo apt-get install xpu-smi
但xpu-smi使用起来挺复杂的,建议直接参考下面的使用文档。

  • 附使用文档

oneAPI安装

接下来才是真的要开始配置环境了。。。。
注意必须要安装Intel® oneAPI Base Toolkit,可以选择性安装oneAPI HPC等套件。

  • 可以直接使用APT包进行安装:

    • wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
      
    • echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
      
    • sudo apt update

    • sudo apt install intel-basekit

  • 也可以直接下载安装包,例如:

wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/163da6e4-56eb-4948-aba3-debcec61c064/l_BaseKit_p_2024.0.1.46_offline.sh

sudo sh ./l_BaseKit_p_2024.0.1.46_offline.sh

安装步骤可以看我以前的文章,但在我安装的时候,遇到了一些BUG,那就是在安装时候会检测Ubuntu缺少了一些必要的包,可当我的确安装缺少的包,并且更新安装界面,但安装脚本没有检测到我已安装过,因此只要你真的安装了缺少的部分,直接点下一步即可。

Miniconda3

这里我就不多介绍了:https://docs.conda.io/en/latest/miniconda.html

记得配置好国内源。(再此提醒:Ubuntu、python、conda国内源都要配置好)

Intel版pytorch

Github地址:https://github.com/intel/intel-extension-for-pytorch

当然也是有tensorflow的:https://github.com/intel/intel-extension-for-tensorflow

这里以Pytorch为例,要想在intel生态上使用AI,就要安装intel-extension-for-pytorch了,你可以认为这是官方pytorch的一个插件。
激活虚拟环境之后,直接:

  • python -m pip install torch==2.1.0a0 torchvision==0.16.0a0 torchaudio==2.1.0a0 intel-extension-for-pytorch==2.1.10+xpu --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/
  • 激活oneAPI环境:source /opt/intel/oneapi/setvars.sh,注意我的安装的是全套,还有位置如果你和我不同记得修改!使用pytorch必须安装dpcpp和oneMKL
  • 最后进行测试:python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.__version__); print(ipex.__version__); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"只要输出不报错即可。

BigDL-LLM安装

现在是大模型的时代,如果要使用intel生态跑大模型,那么必须安装BigDL-LLM:pip install --pre --upgrade bigdl-llm[xpu]
使用BigDL-LLM,同样之前需要激活环境:

source /opt/intel/oneapi/setvars.sh
export USE_XETLA=OFF
export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1

注意:BigDL-LLM+Pytorch 2.1对应oneAPI Base Toolkit2024.0;BigDL-LLM+Pytorch 2.0对应oneAPI Base Toolkit2023.2.

使用BigDL-LLM很简单,换API大法:
对于像原本的from transformers import AutoModel,你可以直接替换成from bigdl.llm.transformers import AutoModel即可。增加参数:optimize_model=True

目前支持替换的API有:AutoModelForCausalLM、AutoModel、AutoModelForSpeechSeq2Seq、AutoModelForSeq2SeqLM
推荐开启int4优化,增加参数load_in_4bit=True

如果你想在XPU(即Intel GPU)上部署,那和英伟达使用方法一样,把模型to(‘xpu’)

题外话:你可以认为BigDL-LLM是intel的transformers库,进一步帮你封装了这些函数,释放了英特尔生态的硬件算力。对于之前的模型,实际上BigDL-LLM也是支持原来的小模型优化的,例如resnet,你可以直接把它用bigdl.llm.optimize_model进行包裹,具体可以查看文档

frp内网穿透

为什么要内网穿透呢?因为又有笔记本又有台式,桌子没有这么多显示屏可以放,不如把Linux穿透一下,直接在笔记本SSH连接,做到雨露均沾。
如何做呢?我之前写过了~可以参考下面:

  • https://blog.csdn.net/qq_28356373/article/details/127941404

转载于染念的博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/486919.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024大一同学进入ACM实验室选拔(东北林业大学)

前言&#xff1a; 15号比赛的6道题&#xff0c;有一道题估计是为了防止有人ak设的&#xff0c;我看题解都没完全看懂&#xff0c;是现在的我的知识盲区了&#xff0c;之后再补吧。 正文&#xff1a; Problem:A股神&#xff1a; #include <bits/stdc.h> using namespace…

AVA企业服务呼叫中心管理后台源码

项目中实现用户管理&#xff0c;包括用户的录入、编辑、查看、修改、用户角色的分配 &#xff0c;支持一个用户拥有多个权限&#xff0c;角色管理&#xff0c;可以自由定义角色、并可以给角色分配不同的权限。

利用Jmeter做接口测试(功能测试)全流程分析

利用Jmeter做接口测试怎么做呢&#xff1f;过程真的是超级简单。 明白了原理以后&#xff0c;把零碎的知识点填充进去就可以了。所以在学习的过程中&#xff0c;不管学什么&#xff0c;我一直都强调的是要循序渐进&#xff0c;和明白原理和逻辑。这篇文章就来介绍一下如何利用…

基于ssh学生信息管理系统

系统是一个学生信息管理&#xff0c;有三种角色&#xff0c;分别是超级管理员和教师还有学生&#xff0c;不同角色看到的功能会不一样。 管理员&#xff1a;学院管理&#xff0c;专业管理&#xff0c;班级管理&#xff0c;学科管理&#xff0c;学生管理&#xff0c;教师管理&am…

警务数据仓库的实现

目录 一、SQL Server 2008 R2&#xff08;一&#xff09;SQL Server 的服务功能&#xff08;二&#xff09;SQL Server Management Studio&#xff08;三&#xff09;Microsoft Visual Studio 二、创建集成服务项目三、配置“旅馆_ETL”数据流任务四、配置“人员_ETL”数据流任…

c++--replace函数

目录 1.从位置 pos 开始&#xff0c;替换长度为 len 的子字符串为 str。2.用字符串 str 替换迭代器范围 [i1, i2) 内的内容。3.从位置 pos 开始&#xff0c;替换长度为 len 的子字符串为 str 中从 subpos 开始长度为 sublen 的子字符串。4.用迭代器范围 [first, last) 内的内容…

ChatGLM3 Linux 部署

1.首先需要下载本仓库&#xff1a; git clone https://github.com/THUDM/ChatGLM3 2.查看显卡对应的torch 版本 官方文档说明&#xff1a; Start Locally | PyTorch 例如&#xff1a; a. 先查看显卡的CUDA版本 nvcc --version 查看对应版本 Previous PyTorch Versions …

2024爱分析·搜索型数据库市场厂商评估报告: 拓尔思

01 研究范围定义 研究范围&#xff1a; 在中央及地方政府的信创政策推动下&#xff0c;我国信创部分领域正在从“试点验证”迈向“规模推广”阶段。随着信创替换的深化&#xff0c;爱分析观察到&#xff0c;在需求侧&#xff0c;企业对信创产品的需求逐渐融合更丰富的业务诉求…

2024年洗地机综合实力排行榜:谁才是真正的洗地神器?

近年来&#xff0c;洗地机在行业里&#xff0c;它集合了扫地和拖地以及自动清洁和除菌的功能&#xff0c;备受人们的喜爱&#xff0c;尤其是平时忙于工作并没有多少时间清洁家务的用户&#xff0c;但是对于第一次接触洗地机的用户来说&#xff0c;怎么选购洗地机也是个问题&…

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

【CSS】CSS基础1(CSS基本介绍+常见样式设计)

目录 什么是CSS&#xff1f; 语法规范 常见样式 例子 代码展示 什么是CSS&#xff1f; 点击以下链接了解更多&#xff1a; ​​​​​​​ ​​​​​https://baike.baidu.com/item/%E5%B1%82%E5%8F%A0%E6%A0%B7%E5%BC%8F%E8%A1%A8/524980?fromModulelemma_inlink(英文…

ADW300多功能无线计量仪表

仪表应用背景 电力运维行业&#xff1a;运维服务系统实时采集大量用户站的运行和动环数据&#xff0c;经专业数据分析&#xff0c;当用户站发生异常情况或运行故障时&#xff0c;及时反馈到运维指挥中心&#xff0c;并通过移动终端通知相应的运维工程师&#xff0c;指导现场作…

Linux Networking - MTU

MTU MTU&#xff0c;Maximum Transmission Unit&#xff0c;指的是Ethernet Frame的Payload部分的长度限制&#xff0c;如下图&#xff1a; 1500这个数字则有一定的历史原因&#xff0c; 参考链接&#xff1a; How 1500 bytes became the MTU of the internethttps://blog.b…

指针知识大礼包,让你的编程之路更顺畅(二)

1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. ⼆级指针 5. 指针数组 6. 指针数组模拟⼆维数 正文开始&#xff1a; 1. 数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作&#xff0c;比如加载数据&#xff0c;或者初始化三方库等等&#xff0c;导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深&#xff0c;或者一些不会立即使用的布局也在一开始一起加载到…

Jira 软件缺陷管理 (软件测试)

内容来源&#xff1a;总结黑马课程 1.软件缺陷信息 2.创建缺陷问题 2.1 缺陷模板 2.2 创建缺陷问题模板

3.25作业

定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转有以下定义&#xff0c;说明哪些量可以改变哪些不可以改变&a…

【C】盛最多水的容器(双指针)

盛最多水的容器 原题目链接:点击跳转 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和(i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说…

【3D reconstruction 学习笔记 第二部】

三维重建 3D reconstruction 4. 三维重建与极几何三角化&#xff08;线性解法&#xff09;三角化&#xff08;非线性解法&#xff09;多视图几何极几何极几何约束基础矩阵估计 5. 双目立体视觉重建6. 多视图重建7. SFM 系统设计8. SLAM系统设计 4. 三维重建与极几何 三角化&…

微信SEO秘籍:6年经验,祝你轻松引流获客

我 17 年前就已经开始研究微信 SEO&#xff0c;并逐步完善成系统的教程&#xff0c;可以说是国内最早的微信 SEO 课程。至今&#xff0c;我已连续教授了 6 年&#xff01; 我自己也一直亲自操作&#xff0c;不断优化和升级我的课程&#xff0c;我的许多学员通过学习我的微信 S…
最新文章