R语言好像不会自动管理内存,需要自己写一些内存管理的句子,不然内存占用会很夸张。 ...
说的是把用不到的对象从环境里删除吗? 是开源的数据集吗?我这里自己组装的工作站是512G内存,可以试一下 说实话 折腾电脑的时间不如把代码逻辑搞懂 这内存有些夸张了,还是花时间学一下Python吧。别折腾新电脑了 本帖最后由 liukang1985 于 2024-12-29 19:43 编辑
不太清楚LZ的业务逻辑,简单扫了眼代码,貌似按年份分成了4组。
如果4组之间的计算可以分别独立处理,那么最简单的办法就是把代码分4次跑,每次跑对应组的数据。如果数据分布比较均匀,那就只要1/4的内存了。
另外,关于编程本身,鉴于LZ没啥经验,就不推荐做啥代码层面的优化了,乱优化有可能把业务逻辑也弄坏了。
就给个简单的建议,无非就是时间和空间的权衡,要么时间换空间(内存),要么空间(内存)换时间。
你的任务,能不能生成中间数据,比如说100W的数据分批处理,生成10W条中间数据,能的话分几次跑出来,然后10W条中间数据再跑下一步,基本就这个思路,确保每步都能跑出来存到硬盘,下一步再重新读取处理。 如果内存消耗特别大,完全可以考虑用固态硬盘做虚拟内存来解决,比如整他一个 2t 的固态,全拿来做虚拟内存,这样至少能跑,只是跑的慢了而已。 灭团神教教主 发表于 2024-12-14 16:29
为什么不用数据库呢?导进数据里随便搞啊
用R把数据加载到内存里跑回归的,你看他代码的注释,用的FE. 估计是算法导致CPU卡死了。 131CC6A 发表于 2024-12-14 15:18
没表达清楚,黑屏死机说的是r直接崩溃了,然后电脑大概会冻结个几分钟恢复正常
机器是戴尔的t3680工作站 ...
AI写的代码,100W+这么大的工程目前的AI应该搞不定,估计里面bug多,你得用人来检查代码 要不换个估计FE的包试试?我觉得是这个包里的算法问题导致CPU卡死,你这个工作站128GB内存不至于100W行数据处理不了,除非是个超大的DataFrame. 看下这个方案行不:
华南有款双路X99寨板,全新保3年,大概1000块钱,可以插16条64G DDR4服务器条,现在服务器内存又便宜。[傻笑] r语言清workspace和内存可以用下面的行
rm(list=ls())
gc()
或是把ls()换成需要删除的变量
硬件方面,如果内存需要太多,首选洋垃圾, X99+ DDR4 RECC或X79 + DDR3 RECC这类的,虽然说即便最强的2687w v2 单线程性能也就是5800x 的一半不到。
另外,R语言本身是默认使用双精度浮点储存数字,如果不是科学计算/ 天文学相关计算其实单精度就够用的,如果能用单精度内存可以至少节省一半 单位有个R脚本,700-900万行的数据,16g内存随便跑啊 明显代码问题,使用的数据集变量没销毁,查看下gc函数unset释放下无用的变量,才100w的数据,炸内存肯定内存泄漏,现在知道codepilot 喂出来的是什么垃圾代码了把 UMagic0xAE 发表于 2024-12-29 20:09
用R把数据加载到内存里跑回归的,你看他代码的注释,用的FE. 估计是算法导致CPU卡死了。 ...
[流汗]所以说啊,把数据导数据库里,再操作随便搞,问AI分两步分开写代码也能搞了
页:
1
[2]