之前发过在Intel A770 GPU安装oneAPI的教程,但那个方法是用于WSL上。总所周知,在WSL使用显卡会有性能损失的。而当初买这台机器的时候我不在场,所以我这几天刚好有空把机器给重装成Ubuntu了。本篇不限于安装oneAPI,因为在英特尔的生态之下,oneAPI只是一个基座。
本篇集大成者,为使用英特尔生态的人提供便利。
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
如果能和我下面的输出差不多,那么恭喜你安装成功了!
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())];"
只要输出不报错即可。
ipex-llm安装
在2024年3月之前,这叫BigDL-LLM。
现在是大模型的时代,如果要使用intel生态跑大模型,那么必须安装ipex-llm
:pip install --pre --upgrade ipex-llm[xpu] --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/
。
使用ipex-llm,同样之前需要激活环境:
source /opt/intel/oneapi/setvars.sh
export USE_XETLA=OFF
export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
export SYCL_CACHE_PERSISTENT=1
注意:ipex-llm+Pytorch 2.1对应oneAPI Base Toolkit2024.0;ipex-llm+Pytorch 2.0对应oneAPI Base Toolkit2023.2.
使用ipex-llm比原来的BigDL-LLM更加简洁:
例如,原来的代码是这样:
model = AutoModel.from_pretrained(model_path)
,- 现在只需要
from ipex_llm import optimize_model
, - 然后进行包裹
model = optimize_model(model)
, - 因为我们在用GPU,接着再卸载到GPU即可
model = model.to('xpu')
- 更多的操作建议查看文档
题外话:你可以认为ipex-llm是intel的transformers库,进一步帮你封装了这些函数,释放了英特尔生态的硬件算力。对于之前的模型,实际上ipex-llm也是支持原来的小模型优化的,例如resnet,你也可以直接把它用optimize_model进行包裹。
frp内网穿透
为什么要内网穿透呢?因为又有笔记本又有台式,桌子没有这么多显示屏可以放,不如把Linux穿透一下,直接在笔记本SSH连接,做到雨露均沾。
如何做呢?我之前写过了~可以参考下面: