zbq123 发表于 2024-12-15 21:14

gartour 发表于 2024-12-15 12:20
R语言好像不会自动管理内存,需要自己写一些内存管理的句子,不然内存占用会很夸张。 ...

说的是把用不到的对象从环境里删除吗?

zbq123 发表于 2024-12-15 21:16

是开源的数据集吗?我这里自己组装的工作站是512G内存,可以试一下

Doomhammer 发表于 2024-12-29 15:09

说实话 折腾电脑的时间不如把代码逻辑搞懂

8owd8wan 发表于 2024-12-29 17:13

这内存有些夸张了,还是花时间学一下Python吧。别折腾新电脑了

liukang1985 发表于 2024-12-29 19:18

本帖最后由 liukang1985 于 2024-12-29 19:43 编辑

不太清楚LZ的业务逻辑,简单扫了眼代码,貌似按年份分成了4组。
如果4组之间的计算可以分别独立处理,那么最简单的办法就是把代码分4次跑,每次跑对应组的数据。如果数据分布比较均匀,那就只要1/4的内存了。
另外,关于编程本身,鉴于LZ没啥经验,就不推荐做啥代码层面的优化了,乱优化有可能把业务逻辑也弄坏了。
就给个简单的建议,无非就是时间和空间的权衡,要么时间换空间(内存),要么空间(内存)换时间。
你的任务,能不能生成中间数据,比如说100W的数据分批处理,生成10W条中间数据,能的话分几次跑出来,然后10W条中间数据再跑下一步,基本就这个思路,确保每步都能跑出来存到硬盘,下一步再重新读取处理。

elvba 发表于 2024-12-29 19:27

如果内存消耗特别大,完全可以考虑用固态硬盘做虚拟内存来解决,比如整他一个 2t 的固态,全拿来做虚拟内存,这样至少能跑,只是跑的慢了而已。

UMagic0xAE 发表于 2024-12-29 20:09

灭团神教教主 发表于 2024-12-14 16:29
为什么不用数据库呢?导进数据里随便搞啊

用R把数据加载到内存里跑回归的,你看他代码的注释,用的FE. 估计是算法导致CPU卡死了。

wispier 发表于 2024-12-29 20:12

131CC6A 发表于 2024-12-14 15:18
没表达清楚,黑屏死机说的是r直接崩溃了,然后电脑大概会冻结个几分钟恢复正常

机器是戴尔的t3680工作站 ...

AI写的代码,100W+这么大的工程目前的AI应该搞不定,估计里面bug多,你得用人来检查代码

UMagic0xAE 发表于 2024-12-29 20:12

要不换个估计FE的包试试?我觉得是这个包里的算法问题导致CPU卡死,你这个工作站128GB内存不至于100W行数据处理不了,除非是个超大的DataFrame.

ujmeo7897 发表于 2024-12-29 20:38

看下这个方案行不:
华南有款双路X99寨板,全新保3年,大概1000块钱,可以插16条64G DDR4服务器条,现在服务器内存又便宜。[傻笑]

装陈醋的酱油瓶 发表于 2024-12-29 22:56

r语言清workspace和内存可以用下面的行

rm(list=ls())
gc()

或是把ls()换成需要删除的变量

硬件方面,如果内存需要太多,首选洋垃圾, X99+ DDR4 RECC或X79 + DDR3 RECC这类的,虽然说即便最强的2687w v2 单线程性能也就是5800x 的一半不到。

另外,R语言本身是默认使用双精度浮点储存数字,如果不是科学计算/ 天文学相关计算其实单精度就够用的,如果能用单精度内存可以至少节省一半

shirakawa 发表于 2024-12-29 23:50

单位有个R脚本,700-900万行的数据,16g内存随便跑啊

deng198679 发表于 2024-12-30 00:14

明显代码问题,使用的数据集变量没销毁,查看下gc函数unset释放下无用的变量,才100w的数据,炸内存肯定内存泄漏,现在知道codepilot 喂出来的是什么垃圾代码了把

灭团神教教主 发表于 2024-12-30 00:42

UMagic0xAE 发表于 2024-12-29 20:09
用R把数据加载到内存里跑回归的,你看他代码的注释,用的FE. 估计是算法导致CPU卡死了。 ...

[流汗]所以说啊,把数据导数据库里,再操作随便搞,问AI分两步分开写代码也能搞了
页: 1 [2]
查看完整版本: windows下跑r语言内存不足,麻烦大佬们推荐一下装机