1. 背景
在人工智能时代,随着神经网络的发展,训练人工智能模型需要越来越多的硬件资源,例如,利用10万条棋局数据、使用一台PC电脑、完整地训练一次确定性神经网络五子棋模型,需要花费一年半的时间。随着训练数据的增长,需要花费的硬件资源和时间也会越来越多。
毋庸置疑的,消耗资源最多的是算法。但除此之外,其他因素也产生了一定的影响,典型的包括操作系统自身的消耗、多任务之间的切换与干扰等。譬如,操作系统强制更新、重启导致中止训练任务,操作系统内核层面的多任务切换、内核任务执行、应用软件的后台运行等都会抢占硬件资源。
2. 方法
为了在不增加硬件的基础上加速模型训练,可以考虑削减软件的干扰,比如,使用单任务系统而非多任务系统进行训练、在多任务系统中训练期间关闭不必要的服务软件等。本文介绍的是在元神系统中进行模型训练的方法。
(1)编写适用于元神系统的程序
元神系统0.4版支持FASM汇编语言编写程序,其他开发语言或许后续版本会逐步支持。
新建源代码文件demo.asm,输入如下所示的代码:
use32START:pushacall demo1popairet;print string at specified coordinate, e.g y=10 and x=2
demo1:pushamov esi,hello_textmov ebx, 10mov ecx, 2call print_stringpoparet;print string
;input:
; esi: address to string
; ebx: y position to print
; ecx: x position to print
print_string:pushaxor eax, eaximul edi, ebx, 80*2add edi, ecxadd edi, ecxmov ah, 0x0F.next_char:lodsbcmp al, 0je .endmov word [gs:edi], axadd edi, 2jmp .next_char.end:poparethello_text db 'Hello world!',0
(2)编译程序
使用FASM汇编器,在命令行输入命令“fasm.exe demo.asm demo.bin”,正确汇编后将会生成可执行程序demo.bin
(3)运行目标程序
将demo.bin文件拷贝到安装有元神系统的U盘的根目录下,将该U盘插入目标电脑上并开机进入元神系统。在元神系统下使用命令ZX来执行目标程序,如下图所示:
(4)备注
本例的代码从屏幕的第10行第2列开始显示字符串“Hello world!”,并非是某个人工智能模型的训练程序,想做模型训练的可照此流程进行操作,只是将此处的代码换成训练用的代码即可。
上图中所示的命令ZX表示执行某个二进制文件(软件程序),完成自己的模型训练等程序编写后,可用此命令来执行编译生成的训练软件。
3. 优点
元神系统的0.4版默认配置为单任务系统,不仅省去了任务切换的消耗,还省去了操作系统内核组件的消耗,将整个机器的所有硬件资源都用于目标软件,这使得模型训练程序等目标软件可以独占所有资源来加速执行。
另外,在目标程序执行的过程中,也不必担心受到操作系统强制更新、其他软件抢占资源等的干扰。