Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在 Surface Book 2 上安装 Ubuntu 以及 CUDA 和 GPU 版 PyTorch #1

Open
DIYer22 opened this issue Dec 8, 2018 · 23 comments
Open

Comments

@DIYer22
Copy link
Member

DIYer22 commented Dec 8, 2018

设备:Surface Book 2 15'' 512GB


ubuntu_on_surface
(1060 GPU 运行 maskrcnn-benchmark)

笔者是计算机视觉算法工程师,在开发和调试计算机视觉代码时,有使用各种可视化手段来调试的习惯,所以,一个带有 CUDA 的 GUI Linux 环境会使我工作效率大增。 买电脑是也是看中了 SB2 15寸自带的 6GB 显存,如此 便能够在 SB2 上搭建带有 CUDA 的 GUI Linux 环境, 以作为深度学习开发机.

经过在 reddit /r/SurfaceLinux 长期观察, 我终于成功的在 SB2 上安装了 Ubuntu 16.04 LTS,CUDA及GPU版PyTorch,目前SB2运行较为正常,同时也能切换回 Windows 10 系统, 能够胜任笔者的需求.

为了方便 Surface-Linux 社群交流, 笔者创建了Surface-Linux 中文论坛, 并将资料和经验分享在论坛上,也欢迎爱好 Linux 的 Surface 用户一同在Surface-Linux 中文论坛上交流!

前置条件

  1. reddit 被屏蔽了, 得有梯子
  2. 资料全是英语, 能看懂英语资料
  3. 有 Ubuntu 安装经验 及 Linux 的基本常识

资料

  1. How to install Ubuntu 16.04 on Surface Book 2: 是安装教程的主力, 且该博客的评论也要细读(以理清软件版本). 不过该作者装的是 Ubuntu on LUKS 一种加密的 Ubuntu, 多了一些没必要的加密步骤
  2. Surface Book 2 working on Ubuntu 16.04 with CUDA: 是一位搞深度学习的博士按照第一个教程写的安装经验, 我的方法和配置基本和他一样
  3. Current State of Surface-Series Devices: 了解 Linux 对各个 Surface 的支持程度
  4. jakeday/linux-surface: 内核大佬写的 README 也要细读
  5. How to dual boot Ubuntu 18.04 on Surface Book 这个教程是装 Ubuntu 18.04, 且不涉及 CUDA, 可以作为参考

看完上述资料, 你便会对在 Surface 上装 Ubuntu 有充足的底气.

在你仔细阅读完以上资料后 我提醒两点:

  1. 安装好 Ubuntu, 在安装 linux-surface 内核前, 有个进程会暂满一个核心 导致机器温度一直很高, 不过安装完 linux-surface 内核后, 过热的问题就没有了
  2. 不知道为啥, 我似乎无法关闭 secret boot, 但是没有影响系统启动与使用

异常

在使用的过程中出现了一些异常

  1. 在开机进入 Ubuntu 系统的时候 有一小段时间(2~3 s) SB2上的外放会发出轻微的白噪音(可能是电流声), 过 2s 后, 进入系统就安静了
  2. 在插入耳塞后, SB2上的外放也会一直发出轻微白噪音(声音大小和 SB2 风扇全开相似), 这个槽点让我觉得有点不爽
  3. 音频外放音质差了很多 听起来非常劣质, 可能原因是: sb2 自己的喇叭素质本就很差, 只是在 Windows 下, 微软把外放的效果尽可能的调教, 矫正好了. 在 Ubunut 下失去这种矫正, 喇叭本来的缺陷就暴露出来了
  4. 在安装玩显卡驱动后 (安装 CUDA 之前), 滚轮滚动 Chrome 有轻微卡屏. 想起我有一台 1080ti 的台式机在 Ubunut 上使用Chrome也相同类型的卡顿, 所以应该是 NVIDIA 的 驱动对 Linux 支持不好导致的, sad 😢
  5. 当插上一个 1080p 显示器组成双屏的时候, 由于 Surface 分辨率比显示器大一倍,尺寸比显示器小一倍, 而 Ubuntu 的窗口是按照像素来显示的, 所以如果按面积算, 一个应用窗口在 Surface 上显示的尺寸大小只有显示器的 1/16, 屏幕比例难以调和. 最后 我通过One command setup xrandr custom resolution 在 SB2 上增加了 1620*1080 选项, 在双屏时, 切换到 1620*1080 分辨率, 解决了此问题
  6. 双屏的时候 Surface 屏幕触控会错位, 但一般 Linux 双屏下, 我也不怎么用触屏

对于这些在 Ubuntu 下的异常, 对影音和娱乐的体验是致命的, 但我对 Ubuntu@Surface 的定位是视觉开发神器, 在这种定位下, 上文的异常影响不大, 能提高开发效率才是正事. 只需在想用 SB2 影音和娱乐时, 切换回 Windows 即可.

Ubuntu 下的键盘分离功能

1674648047

  1. 关机条件下 键盘可分离也可插入
  2. Nvida 驱动安装好后, 默认情况下使用的是 Nvidia GPU, 此时可直接分离. 但是 一分离就死机
  3. nvidia-settings -> PRIME Profiles -> 选择Intel(Power Saving Mode), 再 log out, 可以关闭 Nvidia GPU (也可用 sudo prime-select intel), 此时可分离, 分离后正常运行. 当想切换回 Nvidia GPU时, nvidia-settings 已经无法启动, 需要运行 sudo prime-select nvidia 来切换回 Nvidia GPU, 详细教程

屏幕触控心得: Ubuntu 16.04 未对屏幕触控做任何适配, 在系统界面上使用触控体验非常糟糕, 但是在 Chrome 内能正常使用触控 体验还行.

此外, 由于 Ubuntu 上电源管理很差, 为了防止机器意外启动和重启伤害电池, 所以推荐把引导中的默认启动系统修改为 Windows 10, 教程在这里

最后, 感谢 reddit 上的大佬和 Linux-surface 内核的作者

@DIYer22 DIYer22 changed the title 成功在 Surface Book 2 上安装 Ubuntu 16.04 LTS 以及 CUDA,GPU版PyTorch 在 Surface Book 2 上安装 Ubuntu 16.04 以及 CUDA 和 GPU 版 PyTorch Dec 9, 2018
@DIYer22 DIYer22 changed the title 在 Surface Book 2 上安装 Ubuntu 16.04 以及 CUDA 和 GPU 版 PyTorch 在 Surface Book 2 上安装 Ubuntu 以及 CUDA 和 GPU 版 PyTorch Dec 9, 2018
@ZHG2017
Copy link

ZHG2017 commented Dec 26, 2018

你好,我想咨询一下只是作为深度学习开发机也必须 6GB 显存么? 如果用台式机正式训练模型的话2GB 显存只是作为开发验证是不是也够了?

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 26, 2018

@ZHG2017

得看是做深度学习的什么方向. 对应方向大概需要多少显存才能跑一个 batch 这个你应该更清楚.

比如, 我现在主要做目标检测, 2GB 就不够用, 还有就是 对于 15 寸 SB2 而言, 开机后就占用了 一个多G 的显存了......

image

P.S.

  1. 我比较好奇 你是如何找到这贴子的?
  2. 你的机器是 13 寸的 SB2 吗?

@ZHG2017
Copy link

ZHG2017 commented Dec 26, 2018

你好,我是网上搜索时无意中看到你的帖子,另外15寸的似乎长时间高性能模式运行的话即便插电源也会有供电不足的问题,所以比较担心会不会运行一半任务强制终止之类的。
我还没有购买,目前只是四处了解surface book 2各型号的相关信息,不过谢谢你这么及时回答我的问题。

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 26, 2018

@ZHG2017
嗯呢, 能有帮助是最好的. 对于供电不足, 我还没有遇到过. 我最极端的情况就是在 windows 下长时间一直玩 GTA5, 没有这个问题.

Surface Book 2 working on Ubuntu 16.04 with CUDA 中, 作者在 Linux 做了压力测试:

I also installed the Phoronix test suite to try to get some benchmarks. These ran as well using the Nvidia card and I was getting decent results. I let this run for over an hour, and never saw clock speeds dip or anything out of the ordinary.
My fan is running pretty constantly, but the graphics clock is holding steadily high when I'm running tests, and I haven't seen the temperature exceed 81C (this was during the benchmark tests, it seems to hold steady around 59C). nvidia-smi and X Server settings are showing a fan speed of 0, however (the fan is running to be sure!)

@ZHG2017
Copy link

ZHG2017 commented Dec 26, 2018

那估计是巨硬公司后来硬件改进了,早先的测试似乎都是在长时间游戏下外接电源电池还掉电,另外我主要是打算学习CUDA编程,对深度学习不是很了解,早先只是接触过一般的机器学习。对了能问一下,你训练模型的话,最长满载运行时间能有多长? 有没有出现过热的情况?

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 26, 2018

@ZHG2017 哦哦 明白你的目的了, 我是拿来做开发机的, 最多让 GPU 满载 10 分钟, 没有做过更久的测试了.
P.S. 现阶段 Linux 下 看不到电池电量

@ZHG2017
Copy link

ZHG2017 commented Dec 26, 2018

好的,我明白了,说起来品控是不是提升了? 似乎早期版本经常会有品控问题的说。

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 26, 2018

可能吧 这个我不清楚

@ZHG2017
Copy link

ZHG2017 commented Dec 27, 2018

说起来 你没试试另外一个高人的临时补丁?似乎能够显示电池电量了https://github.com/qzed/linux-surface/releases/tag/v4.18.20-pre2

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 27, 2018

@ZHG2017
为什么他没有提 Pull Request 到 原来的内核呀? 还有, 他的 fork 里面没有说明, 有没有跟进一步的资料呀?

@ZHG2017
Copy link

ZHG2017 commented Dec 27, 2018

你提到的那个内核高人似乎提到他了,还建议把悬赏给这个人,所以我估计基本解决了问题,但是没经过大量测试反馈确认,所以只是Pre-release暂时没有加入到原先的内核

@DIYer22
Copy link
Member Author

DIYer22 commented Dec 27, 2018

@ZHG2017
明白了 我还是观望吧 直到 merge 了再折腾

@ZHG2017
Copy link

ZHG2017 commented Dec 27, 2018

也对,如果是生产用的机器还是等稳定了再折腾。

@xiashiwendao
Copy link

请问windows内置的ubuntu不能跑神经网络吗?

@DIYer22
Copy link
Member Author

DIYer22 commented Jul 26, 2020

请问windows内置的ubuntu不能跑神经网络吗?

WSL1 可以跑 CPU版本, 最近微软更新为 WSL2 后 可以用 CUDA了, 参见:在wsl2中使用GPU

@xiashiwendao
Copy link

楼主,sb2训练模型,风扇,散热能抗住吗?

@DIYer22
Copy link
Member Author

DIYer22 commented Jul 28, 2020

楼主,sb2训练模型,风扇,散热能抗住吗?

肯定不推荐训练呀. 我就只调试代码, 跑跑测试.

@Hustwireless
Copy link

我的nvidia-smi一直出不来...想请教下楼主有没有什么解决方案诶

@DIYer22
Copy link
Member Author

DIYer22 commented Jul 30, 2020

我的nvidia-smi一直出不来...想请教下楼主有没有什么解决方案诶

你是按照上面引用的教程一步一步来的吗? 我这样做了后没有问题呀.

@Hustwireless
Copy link

我的nvidia-smi一直出不来...想请教下楼主有没有什么解决方案诶

你是按照上面引用的教程一步一步来的吗? 我这样做了后没有问题呀.

是的,但是我后期更新了一次jakeday的内核...然后我的nvidia就挂了

@DIYer22
Copy link
Member Author

DIYer22 commented Jul 30, 2020

@Hustwireless 好巧不巧, 我也是更新了 kernel 后, GPU 挂了.......

@Hustwireless
Copy link

@Hustwireless 好巧不巧, 我也是更新了 kernel 后, GPU 挂了.......

2333333,那你现在还用到gpu嘛?

@DIYer22
Copy link
Member Author

DIYer22 commented Jul 31, 2020

好像 linux-surface 官方有解决方案:

https://github.com/linux-surface/surface-aggregator-module/wiki/Discrete-GPU

最近没空折腾, 所以最近没用GPU😂

你要是修复了, 通知我一下, 我也去弄一弄.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants