一、问题背景

  1. 一个朋友在使用 XGBoost 框架进行机器学习编码,他们的一个demo, 在笔记本的虚拟机(4核)运行的时候,只要8s, 但是在一个64核128G 的物理机上面的虚拟机去跑的时候,发现时间需要更长。

    image-20220517103920522

    笔记本执行:

    image-20220517104217425

二、问题定位和解决

首先看到负载是比较高的,内存占用比较少。因为是计算型的,所以这种状态是正常的。

一开始我觉得是GIL 锁,后面询问是使用了 XGBoost 框架,想去官网看看能不能找到相关内容

XGBoost 多线程支持 文档的一段话提醒了我:

示例: https://github.com/dmlc/xgboost/blob/master/demo/guide-python/sklearn_parallel.py

我们通过示例将 n_job 的值调整为 cpu 核心的一半,

n_jobs=multiprocessing.cpu_count()//2

发现解决了问题

image-20220517104911783

作者:|自由早晚乱余生|,原文链接: https://www.cnblogs.com/operationhome/p/16324011.html

文章推荐

Kafka实时数据即席查询应用与实践

一篇文章搞定什么是nodeJs它和NPM关系与应用

Swift Codable协议实战:快速、简单、高效地完成JSON和Model...

基于Canal实现MySQL 8.0 数据库数据同步

.Net Core后端架构实战【2-实现动态路由与Dynamic API】

逍遥自在学C语言 | 位运算符的基础用法

【开源】最近写了一个简单的网址导航网站

使用Net将HTML简历导出为PDF格式

深入理解 Python 虚拟机:整型(int)的实现原理及源码剖析

一文快速回顾 Java 操作数据库的方式-JDBC

Go - 操作MySQL

配置中心Nacos(服务发现)