CN111144582B - 训练及更新机器学习模型的方法及相应装置 - Google Patents
训练及更新机器学习模型的方法及相应装置 Download PDFInfo
- Publication number
- CN111144582B CN111144582B CN201911415466.7A CN201911415466A CN111144582B CN 111144582 B CN111144582 B CN 111144582B CN 201911415466 A CN201911415466 A CN 201911415466A CN 111144582 B CN111144582 B CN 111144582B
- Authority
- CN
- China
- Prior art keywords
- feature
- data group
- array
- level
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
提供了一种训练及更新机器学习模型的方法及相应装置。所述训练机器学习模型的方法包括:针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
Description
技术领域
本发明总体说来涉及人工智能领域,更具体地讲,涉及一种训练及更新机器学习模型的方法及相应装置。
背景技术
基于参数服务器(parameter server)的机器学习系统是一种常见的机器学习系统的分布式实现方式。在这一类机器学习系统中,训练进程将输入的样本数据划分成大小相同的若干数据组(mini batch);然后针对每一个数据组从参数服务器取得与这个数据组的数据所对应的机器学习模型的特征参数,并使用取得的特征参数,基于这个数据组的数据计算出各个特征对应的梯度信息;将所得的梯度信息返回给参数服务器,以由参数服务器基于梯度信息对其当前所保存的机器学习模型的特征参数进行更新,从而实现机器学习模型的更新。
在计算梯度信息的阶段,需要维护一个特征id到梯度信息(例如,包括梯度及其相关变量)的哈希表(hash table)。具体地,在针对每个数据组计算梯度信息时,需要遍历该数据组中的每条样本,计算该条样本中的每一个特征的特征值所对应的梯度信息,再从与该数据组对应的哈希表中找到与该特征对应的之前计算得到的梯度信息,与之合并(例如,相加)后存入该哈希表中,如果该哈希表中不存在该特征的特征id(即,不存在与该特征对应的之前计算得到的梯度信息),则直接将本次计算得到的梯度信息存入该哈希表中。此外,参数服务器也使用哈希表来保存特征id到特征参数的映射,当从训练进程接收到包括梯度信息的特征参数更新请求时,需要从该哈希表中找到与该特征参数更新请求相应的特征参数,使用接收到的梯度信息对其进行更新。
上述训练及更新机器学习模型的方式主要存在以下问题:
(1)虽然哈希算法为常数时间算法(即,O(1)算法),但由于用于进行机器学习模型训练的数据集通常包含百万到上亿个特征值(一个数据集有多条样本,每条样本都有多个特征值),且机器学习算法会对数据集进行多轮(epoch)训练,因此,上述哈希过程会被大量执行,导致累积时间不可忽视。
(2)除了每次访问哈希表要计算键的哈希值之外,哈希表还需要占用更多的内存,一方面用以维护哈希表的结构,另一方面为了避免哈希值冲突需要留有足够的空位来保证效率;并且,哈希表占用的用于存储的内存往往是动态分配的,这些动态分配到的内存地址在空间中通常不连续,因此,这些内存的使用会导致处理器缓存(cpu cache,指L1-L3cache)的效率较低,进而导致存取效率较低。
发明内容
本发明的示例性实施例在于提供一种训练及更新机器学习模型的方法及相应装置,能够尽量避免在训练及更新机器学习模型的过程中哈希表的使用及哈希过程,从而解决现有技术存在的上述问题。
根据本发明的示例性实施例,提供一种训练机器学习模型的方法,其中,原始训练样本数据集被划分成多个数据组,所述方法包括:针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
可选地,生成与每个数据组中出现的全部原始特征id对应的新特征id的步骤包括:获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数;针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
可选地,在第一级索引中,以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与其对应的第一级特征id;在与每个数据组对应的第二级索引中,以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与其对应的第二级特征id。
可选地,与每个数据组对应的第二级索引中还存储有该数据组中出现的全部原始特征id的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
可选地,获取第一级索引的步骤包括:将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合中;将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。
可选地,针对每个数据组,生成与该数据组对应的第二级索引的步骤包括:针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中;将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
可选地,将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引的步骤包括:将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序后形成的数组作为第一级索引。
可选地,将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引的步骤包括:将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。
可选地,针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程的步骤包括:针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数;基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id;将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
可选地,由k个参数服务器进程维护所述机器学习模型的特征参数,所述方法还包括:分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点的数组下标存储为与该数据组对应的分片索引,其中,针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程的步骤包括:针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程,其中,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素的数组下标,其中,k为大于0的整数,n为大于0的整数,i为大于0的整数。
可选地,将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程的步骤包括:基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组中的分区;针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
根据本发明的另一示例性实施例,提供一种更新机器学习模型的方法,其中,原始训练样本数据集被划分成多个数据组,所述方法包括:当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
可选地,基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新的步骤包括:获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引;基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id;使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应,其中,与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
可选地,所述方法还包括:当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引;从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素;将读取的元素发送到所述训练进程。
可选地,所述方法还包括:当从训练进程接收到请求时,将所述请求所涉及的第一级特征id划分为j份,其中,j为大于0的整数,其中,通过j个线程来并行处理所述请求,每个线程处理涉及对应的一份第一级特征id的请求,其中,所述请求为特征参数获取请求或特征参数更新请求。
根据本发明的另一示例性实施例,提供一种训练机器学习模型的装置,其中,原始训练样本数据集被划分成多个数据组,所述装置包括:新特征id生成单元,适于针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;梯度信息提供单元,适于针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
可选地,新特征id生成单元包括:第一级索引获取单元,适于获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数;第二级索引生成单元,适于针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
可选地,在第一级索引中,以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与其对应的第一级特征id;在与每个数据组对应的第二级索引中,以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与其对应的第二级特征id。
可选地,与每个数据组对应的第二级索引中还存储有该数据组中出现的全部原始特征id的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
可选地,第一级索引获取单元适于将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合中;并将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。
可选地,第二级索引生成单元适于针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中;并将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
可选地,第一级索引获取单元适于将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序后形成的数组作为第一级索引。
可选地,第二级索引生成单元适于将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。
可选地,梯度信息提供单元包括:特征参数获取单元,适于针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数;梯度信息获取单元,适于基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id;梯度信息发送单元,适于将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
可选地,由k个参数服务器进程维护所述机器学习模型的特征参数,所述装置还包括:分片索引生成单元,适于分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点的数组下标存储为与该数据组对应的分片索引,其中,特征参数获取单元适于针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;并针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程,其中,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素的数组下标,其中,k为大于0的整数,n为大于0的整数,i为大于0的整数。
可选地,梯度信息发送单元适于基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组中的分区;并针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
根据本发明的另一示例性实施例,提供一种参数服务器,其中,原始训练样本数据集被划分成多个数据组,所述参数服务器包括:梯度信息获取单元,适于当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;特征参数更新单元,适于基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
可选地,特征参数更新单元包括:第二级索引获取单元,适于获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引;第一级特征id确定单元,适于基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id;更新单元,适于使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应,其中,与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
可选地,第二级索引获取单元还适于当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引,其中,所述参数服务器还包括:特征参数读取单元,适于从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素;特征参数发送单元,适于将读取的元素发送到所述训练进程。
可选地,所述参数服务器还包括:请求划分单元,适于当从训练进程接收到请求时,将所述请求所涉及的第一级特征id划分为j份,其中,j为大于0的整数,其中,通过j个线程来并行处理所述请求,每个线程处理涉及对应的一份第一级特征id的请求,其中,所述请求为特征参数获取请求或特征参数更新请求。
根据本发明的另一示例性实施例,提供一种包括至少一个计算装置和至少一个存储指令的存储装置的训练机器学习模型的装置,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的训练机器学习模型的方法。
根据本发明的另一示例性实施例,提供一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的训练机器学习模型的方法。
根据本发明的另一示例性实施例,提供一种包括至少一个计算装置和至少一个存储指令的存储装置的参数服务器,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的更新机器学习模型的方法。
根据本发明的另一示例性实施例,提供一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的更新机器学习模型的方法。
根据本发明示例性实施例的训练及更新机器学习模型的方法及相应装置,能够以数组形式来保存特征id到特征参数的梯度信息的映射,并能够以数组形式来保存特征id到特征参数的映射,以尽量避免在训练及更新机器学习模型的过程中哈希表的使用及哈希过程,从而提高训练及更新机器学习模型的效率,进而提高整个机器学习过程的效率。此外,还能够有效减少在更新机器学习模型的过程中锁(mutex)的使用。
将在接下来的描述中部分阐述本发明总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本发明示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1示出根据本发明示例性实施例的训练机器学习模型的方法的流程图;
图2示出根据本发明示例性实施例的生成与每个数据组中出现的全部原始特征id对应的新特征id的方法的流程图;
图3示出根据本发明示例性实施例的第一级索引的示例;
图4示出根据本发明示例性实施例的第二级索引的示例;
图5示出根据本发明示例性实施例的获取第一级索引的方法的流程图;
图6示出根据本发明示例性实施例的获取第一级索引的示例;
图7示出根据本发明示例性实施例的针对每个数据组生成与该数据组对应的第二级索引的方法的流程图;
图8示出根据本发明示例性实施例的将数据组中的每条样本中的原始特征id更新为对应的新特征id的示例;
图9示出根据本发明示例性实施例的计算用于更新机器学习模型的特征参数的梯度信息并发送到参数服务器进程的方法的流程图;
图10示出根据本发明示例性实施例的索引之间的对应关系的示例;
图11示出根据本发明示例性实施例的更新机器学习模型的方法的流程图;
图12示出根据本发明示例性实施例的对特征参数进行更新的方法的流程图;
图13示出根据本发明示例性实施例的提供特征参数的方法的流程图;
图14示出根据本发明示例性实施例的使用多线程处理请求的示例;
图15示出根据本发明示例性实施例的训练机器学习模型的装置的框图;
图16示出根据本发明示例性实施例的新特征id生成单元的框图;
图17示出根据本发明示例性实施例的梯度信息提供单元的框图;
图18示出根据本发明示例性实施例的参数服务器的框图;
图19示出根据本发明示例性实施例的特征参数更新单元的框图。
具体实施方式
现将详细参照本发明的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本发明。
图1示出根据本发明示例性实施例的训练机器学习模型的方法的流程图。
根据本发明示例性实施例的训练机器学习模型的方法可由训练进程来执行。作为示例,可由多个训练进程并行地执行根据本发明示例性实施例的训练机器学习模型的方法,以并行地训练同一机器学习模型,并且,每个训练进程基于其获取的部分原始训练样本数据集的样本数据来执行根据本发明示例性实施例的训练机器学习模型的方法,其中,不同训练进程获取的样本数据无交集,且不同训练进程获取的样本数据的合集正好是所述原始训练样本数据集。作为示例,所述多个训练进程可分布在一台用于训练机器学习模型的装置上,也可分布在多台用于训练机器学习模型的装置上。
用于训练所述机器学习模型的原始训练样本数据集可被划分成多个数据组。作为示例,可由训练进程将其获取的部分原始训练样本数据集的样本数据划分成多个数据组。
如图1所示,在步骤S10,针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
在步骤S20,针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入与该数据组对应的一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
这里,与每个特征对应的梯度信息(即,基于该特征的特征值计算得到的梯度信息)在数组中的数组下标可与该特征的新特征id相对应,例如,可与该特征的新特征id相同。
作为示例,与该数据组中出现的全部原始特征id对应的新特征id可为从“0”开始的连续整数,例如,可分别为:0、1、2、……、N-1,其中,该数据组中出现的全部原始特征id的数量为N。相应地,在将与每个特征对应的梯度信息存入对应的数组时,可将该梯度信息存入数组下标为对应的特征的新特征id的元素中。
根据本发明示例性实施例的训练机器学习模型的方法,通过引入连续整数作为特征的新特征id,实现了以数组形式保存特征id到特征参数的梯度信息的映射。
图2示出根据本发明示例性实施例的生成与每个数据组中出现的全部原始特征id对应的新特征id的方法的流程图。
如图2所示,在步骤S101,获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数。
作为示例,在第一级索引中,可以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与该原始特征id对应的第一级特征id。
具体说来,第一级索引可为一个一维数组,如果原始训练样本数据集中所有出现过的原始特征id的总数为n,则第一级索引的数组长度可为n(从数组的第0个元素开始依次存储原始特征id)或n+1(预留有数组的第0个元素,从数组的第1个元素开始依次存储原始特征id)。作为示例,所有在原始训练样本数据集中没有出现过的特征id都可用该数组的第0个元素表示,例如,如果数据集除了原始训练样本数据集之外还有测试集或验证集,则该数组的第0个元素用以表示在测试集/验证集中出现,但没有在原始训练样本数据集中出现的特征的特征id。
图3示出根据本发明示例性实施例的第一级索引的示例,这里,图3仅示出了第一级索引的数组长度为n+1的情况,从数组的第1个元素到第n个元素分别为原始训练样本数据集中所有出现过的n个原始特征id,且每个元素的数组下标为其对应的第一级特征id,因此,作为第一级索引的数组能够体现原始特征id与新特征id之间的对应关系。
下面将结合图5和图6来详细描述获取第一级索引的示例性实施例。
返回图2,在步骤S102,针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
这里,所述等数量的第二级特征id为连续的整数,且每个第二级特征id分别为一个整数。
作为示例,在与每个数据组对应的第二级索引中,可以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与该第一级特征id对应的第二级特征id。
具体说来,与第i个数据组对应的第二级索引可包括一个一维数组,如果第i个数据组中所有出现过的原始特征id的总数为Ni,则与第i个数据组对应的第二级索引的数组长度可为Ni,从该数组的第0个元素到第(Ni-1)个元素依次为第i个数据组中所有出现过的原始特征id所对应的第一级特征id。
图4示出根据本发明示例性实施例的第二级索引的示例,在与数据组对应的第二级索引中,从数组的第0个元素到第6个元素分别为该数据组中所有出现过的7个原始特征id所对应的第一级特征id,且每个元素的数组下标为与其对应的第二级特征id,因此,作为第二级索引的数组能够针对每个数据组体现第一级特征id与第二级特征id之间的对应关系。
应该理解,原始训练样本数据集中的所有数据组共用同一个第一级索引,但第二级索引为仅用于每个数据组的索引,即,每个数据组有各自的第二级索引。同一个第一级特征id在不同的第二级索引中所对应的第二级特征id可能不同,换言之,在不同数据组中的同一个原始特征id所对应的第二级特征id(即,新特征id)可能不同。
根据本发明的示例性实施例,通过将原始特征id的取值空间映射到一个从0或1开始的连续整数空间(即,形成第一级索引),并针对每一个数据组生成一个数据组内部的索引(即,生成第二级索引),实现了对原始特征id的索引。通过这两级索引,能够将模型训练过程中所使用的用于存储特征参数的梯度信息的哈希数据结构替换为预先分配好的数组结构,从而有效避免在训练机器学习模型的过程中的哈希过程。
图5示出根据本发明示例性实施例的获取第一级索引的方法的流程图。
如图5所示,在步骤S1011,将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合(hash set)中,由于该哈希集合中无重复的原始特征id,从而能够得到原始训练样本数据集中出现的全部且无重复的原始特征id。
在步骤S1012,将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。即,将所述哈希集合中的每个原始特征id分别存入到该数组中的一个元素中。
作为示例,当有多个训练进程(P1到Pm,m为大于1的整数)并行地训练所述机器学习模型时,在步骤S1011中,每个训练进程可将各自获取的部分原始训练样本数据集中的各条样本中的各个原始特征id存入各自的一个哈希集合中,并由一个训练进程将所有哈希集合(即,m个哈希集合)合并为一个哈希集合。例如,训练进程P2到Pm可将各自生成的hashset发送给训练进程P1,以由训练进程P1将hashset2到hashsetm合并到hashset1中。相应地,在步骤S1012,训练进程P1将合并后的hashset1中的原始特征id存入长度为n的数组中,从而形成了第一级索引,并将第一级索引发送到训练进程P2到Pm,从而训练进程P2到Pm也获取了第一级索引。例如,上述过程可如图6所示,应该理解,图6中仅示出了m为2时的情况,即,由训练进程P1和P2并行地训练所述机器学习模型时的情况,实际上,m可大于2,生成第一级索引的过程与m为2时类似。
作为示例,可将合并后的哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序(shuffle)后形成的数组作为第一级索引,从而避免在后面所述的生成分片索引的过程中使得出现频次较高的特征的特征id落在同一分区。
图7示出根据本发明示例性实施例的针对每个数据组生成与该数据组对应的第二级索引的方法的流程图。每个训练进程可独立执行该方法。
如图7所示,在步骤S1021,针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中。
在步骤S1022,将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
作为示例,可将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。例如,可按从小到大进行排序。
此外,作为示例,与每个数据组对应的第二级索引中还可存储有该数据组中出现的全部原始特征id(即,与该数据组对应的全部第二级特征id)的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
图8示出根据本发明示例性实施例的将数据组中的每条样本中的原始特征id更新为对应的新特征id的示例。如图8所示,针对每个数据组,可基于第一级索引将该数据组中的各条样本中的各个原始特征id替换为与其对应的第一级特征id,并将替换后的各条样本中出现的全部第一级特征id存入一个一维数组,通过对该数组中的数据进行从小到大的排序后形成了第二级索引;接下来,可基于该第二级索引将替换后的各条样本中的各个第一级特征id替换为与其对应的第二级特征id,从而实现了将数据组中的各条样本中的原始特征id更新为新特征id。应该理解,图8及其相关描述是为了更形象地表述形成第二级索引的方式,实际上,在执行步骤S1021时,可直接将数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中,而不会将数据组中的各条样本中的各个原始特征id替换为与其对应的第一级特征id,并将替换后的各条样本中出现的全部第一级特征id存入一个哈希集合中;相应地,在执行步骤S10时,可直接将数据组中的每条样本中的原始特征id替换为对应的第二级特征id。
图9示出根据本发明示例性实施例的计算用于更新机器学习模型的特征参数的梯度信息并发送到参数服务器进程的方法的流程图。
如图9所示,在步骤S201,针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数。
在步骤S202,基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id。
具体说来,遍历数据组中所有已经更新了特征id(即,更新为第二级特征id)的样本,使用机器学习算法计算每条样本中的每一个特征的特征值所对应的梯度信息,由于此时样本中的原始特征id已被替换为第二级特征id,所以在合并梯度信息时可以直接使用第二级特征id来从用于存储梯度信息的数组中找到与该特征对应的梯度信息进行合并,避免了哈希过程。
实际上,针对每个数据组的用于存储梯度信息的数组的长度与针对该数据组的第二级特征id的数量相同。作为示例,在基于每个数据组进行训练时,可根据与该数据组对应的第二级索引中保存的“特征id数量”申请一个数组(连续内存空间)用于保存与该数据组对应的临时梯度信息,且与每个特征对应的梯度信息在用于存储梯度信息的数组中的数组下标为该特征的第二级特征id。
在步骤S203,将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
作为示例,由k个参数服务器进程维护所述机器学习模型的特征参数(及中间变量),根据本发明示例性实施例的训练机器学习模型的方法还可包括:分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点(即,作为分区的分界点的数组元素)的数组下标存储为与该数据组对应的分片索引,k为大于0的整数。
作为示例,如果k大于1,则由k个参数服务器进程分片(sharding)维护所述机器学习模型的特征参数(及中间变量)。
作为示例,k个参数服务器进程可分布在一个参数服务器上,也可分布在多个参数服务上。
这里,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)或(i*n/k+1)的元素。当第一级特征id为从0开始的连续整数时,与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素;当第一级特征id为从1开始的连续整数时,与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k+1)的元素。这里,n为大于0的整数,i为大于0的整数。
具体说来,当第一级特征id为从1开始的连续整数时,第二级索引的分区为左闭右开区间,分界点依次为:该第二级索引中数值从右侧最接近以下数值的元素:(n/k+1),(2n/k+1),(3n/k+1),…,((k-1)n/k+1)。以图8中的数据为例,假设k=3,n=75,则(n/k+1=26)和(2n/k+1=51)将第一级特征id的区间[1,75]划分为[1,26),[26,51),[51,75]三个区间,而针对图8中所示出的数据组,由于该数据组中的特征所对应的第一级特征id并不存在26,所以使用所对应的第一级特征id之中从右侧最接近26的27作为分界点以保证区间左闭右开的要求,分界点27和51在第二级索引中的数组下标为4和5,所以最终得到的与该数据组对应的分片索引为4和5。
实质上,也可理解为所训练的机器学习模型的特征参数被划分成k份,每个参数服务器进程维护对应的一份特征参数,相应地,与特征参数对应的特征也被划分到k个分片区间,以将基于属于每个分片区间的特征的特征值所得到的梯度信息发送到与该分片区间中的特征对应的特征参数所对应的参数服务器进程。应该理解,与一个分片区间中的特征对应的特征参数仅被一个参数服务器进程维护。即,与数据组对应的第二级索引的每个分区内的第二级特征id对应的特征所对应的特征参数仅由与该分区对应的参数服务器进程维护。
作为示例,分片索引可以一维数组的形式存储全部分界点的数组下标,该一维数组的长度可为k-1。
作为示例,针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程的步骤包括:针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;并针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程。
相应地,作为示例,将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程的步骤可包括:基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组(与该数据组对应的用于存储梯度信息的数组)中的分区;针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
实际上,与数据组对应的用于存储梯度信息的数组可按照与该数据组对应的分片索引,被划分为与k个参数服务器进程一一对应的k个分区。用于存储梯度信息的数组中的k个分区与第二级索引中的k个分区一一对应,且对应的两个分区中的元素的数组下标相同。
在现有技术中,在从参数服务器获取特征参数阶段,需要遍历数据组中的所有样本,将样本中的每一个特征id存入一个哈希集合(hash set)中,以得到该数据组中所有出现的特征id。并且,在计算梯度信息阶段,需要维护一个特征id到梯度信息(例如,包括梯度及其相关变量)的哈希表(hash table)。在训练进程与k个参数服务器进程进行通信时,需要将上述生成的哈希集合或哈希表分成与参数服务器进程对应的k份,而这一过程需要遍历上述生成的哈希集合或哈希表,判断每一个特征id(哈希集合中的元素或者哈希表的键)对应于哪一个参数服务器进程的分片,通常需要使用特征id的哈希值对n的余数(hash(特征id)%n)来进行判断。而根据本发明的示例性实施例,避免了上述遍历哈希集合或哈希表的操作。
图10示出根据本发明示例性实施例的索引之间的对应关系的示例。如图10所示,数据组中的每条样本中的原始特征id已被替换为对应的第二级特征id,样本1中的第二级特征id与原始特征id之间的对应关系如图所示,第二级特征id与第一级特征id相对应,而第一级特征id与原始特征id相对应,此外,图中也示出了数据组的分片索引与第二级索引及第一级索引之间的对应关系。
图11示出根据本发明示例性实施例的更新机器学习模型的方法的流程图。这里,用于训练所述机器学习模型的原始训练样本数据集可被划分成多个数据组。
如图11所示,在步骤S50,当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组。
在步骤S60,基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
根据本发明的示例性实施例,在存储特征id到特征参数的映射时,由于引入了连续整数作为特征的新特征id,实现了以数组形式保存特征id到特征参数的映射,从而尽量避免了哈希表的使用及哈希过程,大大提高了参数存取的时间和空间效率。
图12示出根据本发明示例性实施例的对特征参数进行更新的方法的流程图。
如图12所示,在步骤S601,获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引。
在步骤S602,基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id。每个元素所对应的第一级特征id即在数组中的相同位置处的第一级特征id。
在步骤S603,使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应;与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
实际上,特征参数以对应的特征的第一级特征id或相较于该第一级特征id偏移一定整数量的整数作为数组下标,存储在用于存储特征参数的数组中。
图13示出根据本发明示例性实施例的提供特征参数的方法的流程图。
参照图13,在步骤S401,当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引。
在步骤S402,从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素。
在步骤S403,将读取的元素发送到所述训练进程。
此外,作为示例,当从训练进程接收到请求时,可将所述请求所涉及的第一级特征id(即,所述请求中的第二级索引中的全部第一级特征id)划分为j份,其中,j为大于0的整数,其中,通过j个线程来并行处理所述请求,其中,每个线程处理涉及对应的一份第一级特征id的请求,其中,所述请求为特征参数获取请求或特征参数更新请求。即,通过多个线程来执行为了满足该请求需要执行的操作。
由于第一级特征id为连续整数,能够使用预先分配好的数组存储特征参数,因此,在使用多线程处理一个请求时,能够将该请求所涉及的第一级特征id切分成多个等份,与每一份相应的请求由一个线程处理,且不需要锁。
实际上,在现有技术中,由于原始特征id可能为任意数据类型(例如,结构体、字符串等),使得取值空间分布不确定,就只能将原始特征id与特征参数关联地存储在哈希表或树等非数组的数据结构中,在这些数据结构中,例如如果要添加一个数据点,往往会涉及到动态内存分配,并且可能会更改其他数据点在内存中的位置,因此,在现有技术中,如果使用多线程来访问存储特征参数的哈希表,则对与每一个特征id对应的特征参数的存取都需要锁(mutex)来保证数据的一致性,这个锁可以是针对每个特征id的锁,也可以是整个哈希表使用一个锁,也可以是介于两者之间,即,多个特征id共用一个锁。而根据本发明的示例性实施例,能够有效减少在更新机器学习模型的过程中锁的使用。
图14示出根据本发明示例性实施例的使用多线程处理请求的示例。
参照图14,如果共使用j个线程作为更新机器学习模型的工作线程,则针对每一个请求的处理过程可如下所示:
(1)当主线程接收到训练进程的请求时,将请求分为j等分,每一等份交给一个工作线程处理,并且主线程在计数信号量(counting semaphore,记为S)上等待被唤醒。
(2)每个工作线程可对对应的一份请求进行处理(例如,将所需的特征参数复制到响应的内存区域中,或者依据请求中的梯度信息更新当前保存的特征参数),处理完成后通知信号量S。
(3)当所有工作线程完成后主线程被唤醒,将响应发回给对应的训练进程。
在上述过程中,由于每个工作线程操作的内存区域没有重叠,所以不需要使用锁来保证数据的一致性,从而能够有效降低使用锁所带来的性能损耗。
图15示出根据本发明示例性实施例的训练机器学习模型的装置的框图。
如图15所示,根据本发明示例性实施例的训练机器学习模型的装置包括:新特征id生成单元10和梯度信息提供单元20。这里,原始训练样本数据集被划分成多个数据组。
具体说来,新特征id生成单元10适于针对每个数据组,获取与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;
梯度信息提供单元20适于针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
图16示出根据本发明示例性实施例的新特征id生成单元的框图。
如图16所示,根据本发明示例性实施例的新特征id生成单元10包括:第一级索引获取单元101和第二级索引生成单元102。
具体说来,第一级索引获取单元101适于获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数。
作为示例,在第一级索引中,可以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与其对应的第一级特征id。
作为示例,第一级索引获取单元101可适于将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合中;并将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。
作为示例,第一级索引获取单元101可适于将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序后形成的数组作为第一级索引。
第二级索引生成单元102适于针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
作为示例,在与每个数据组对应的第二级索引中,可以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与其对应的第二级特征id。
作为示例,第二级索引生成单元102可适于针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中;并将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
作为示例,第二级索引生成单元102可适于将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。
作为示例,与每个数据组对应的第二级索引中还可存储有该数据组中出现的全部原始特征id的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
图17示出根据本发明示例性实施例的梯度信息提供单元的框图。
如图17所示,根据本发明示例性实施例的梯度信息提供单元20可包括:特征参数获取单元201、梯度信息获取单元202、以及梯度信息发送单元203。
具体说来,特征参数获取单元201适于针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数。
梯度信息获取单元202适于基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id。
梯度信息发送单元203适于将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
此外,作为示例,由k个参数服务器进程维护所述机器学习模型的特征参数,根据本发明示例性实施例的训练机器学习模型的装置还可包括:分片索引生成单元(未示出),分片索引生成单元适于分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点的数组下标存储为与该数据组对应的分片索引。
这里,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素的数组下标,其中,k为大于0的整数,n为大于0的整数,i为大于0的整数。
相应地,作为示例,特征参数获取单元201可适于针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;并针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程,
作为示例,梯度信息发送单元203可适于基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组中的分区;并针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
图18示出根据本发明示例性实施例的参数服务器的框图。
如图18所示,根据本发明示例性实施例的参数服务器包括:梯度信息获取单元50和特征参数更新单元60。这里,原始训练样本数据集被划分成多个数据组,所述参数服务器包括:
具体说来,梯度信息获取单元50适于当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组。
特征参数更新单元60适于基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
图19示出根据本发明示例性实施例的特征参数更新单元的框图。
如图19所示,根据本发明示例性实施例的特征参数更新单元60包括:第二级索引获取单元601、第一级特征id确定单元602、以及更新单元603。
具体说来,第二级索引获取单元601适于获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引。
第一级特征id确定单元602适于基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id。
更新单元603适于使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应,其中,与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
作为示例,第二级索引获取单元601还可适于当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引,根据本发明示例性实施例的参数服务器还可包括:特征参数读取单元(未示出)和特征参数发送单元(未示出)。特征参数读取单元适于从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素;特征参数发送单元适于将读取的元素发送到所述训练进程。
作为示例,根据本发明示例性实施例的参数服务器还可包括:请求划分单元(未示出),请求划分单元适于当从训练进程接收到请求时,将所述请求所涉及的第一级特征id划分为j份,其中,j为大于0的整数,其中,通过j个线程来并行处理所述请求,每个线程处理涉及对应的一份第一级特征id的请求,其中,所述请求为特征参数获取请求或特征参数更新请求。
应该理解,根据本发明示例性实施例的训练机器学习模型的装置和参数服务器的具体实现方式可参照结合图1至图14描述的相关具体实现方式来实现,在此不再赘述。
根据本发明示例性实施例的训练机器学习模型的装置和参数服务器所包括的单元可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些单元可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。此外,这些单元所实现的一个或多个功能也可由物理实体设备(例如,处理器、客户端或服务器等)中的组件来统一执行。
应理解,根据本发明示例性实施例的训练机器学习模型的方法可通过记录在计算可读介质上的程序来实现,例如,根据本发明的示例性实施例,可提供一种训练机器学习模型的计算机可读介质,其中,在所述计算机可读介质上记录有用于执行以下方法步骤的计算机程序:针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数,其中,原始训练样本数据集被划分成多个数据组。
应理解,根据本发明示例性实施例的更新机器学习模型的方法可通过记录在计算可读介质上的程序来实现,例如,根据本发明的示例性实施例,可提供一种更新机器学习模型的计算机可读介质,其中,在所述计算机可读介质上记录有用于执行以下方法步骤的计算机程序:当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数,其中,原始训练样本数据集被划分成多个数据组。
上述计算机可读介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,应注意,所述计算机程序还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经参照图1至图14进行了描述,这里为了避免重复将不再进行赘述。
应注意,根据本发明示例性实施例的训练机器学习模型的装置和参数服务器可完全依赖计算机程序的运行来实现相应的功能,即,各个单元与计算机程序的功能架构中与各步骤相应,使得整个系统通过专门的软件包(例如,lib库)而被调用,以实现相应的功能。
另一方面,根据本发明示例性实施例的训练机器学习模型的装置和参数服务器所包括的各个单元也可以通过硬件、软件、固件、中间件、微代码或其任意组合来实现。当以软件、固件、中间件或微代码实现时,用于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行相应的操作。
例如,本发明的示例性实施例还可以实现为计算装置,该计算装置包括存储部件和处理器,存储部件中存储有计算机可执行指令集合,当所述计算机可执行指令集合被所述处理器执行时,执行训练机器学习模型的方法。
例如,本发明的示例性实施例还可以实现为计算装置,该计算装置包括存储部件和处理器,存储部件中存储有计算机可执行指令集合,当所述计算机可执行指令集合被所述处理器执行时,执行更新机器学习模型的方法。
具体说来,所述计算装置可以部署在服务器或客户端中,也可以部署在分布式网络环境中的节点装置上。此外,所述计算装置可以是PC计算机、平板装置、个人数字助理、智能手机、web应用或其他能够执行上述指令集合的装置。
这里,所述计算装置并非必须是单个的计算装置,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。计算装置还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子装置。
在所述计算装置中,处理器可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
根据本发明示例性实施例的训练机器学习模型的方法中所描述的某些操作可通过软件方式来实现,某些操作可通过硬件方式来实现,此外,还可通过软硬件结合的方式来实现这些操作。
根据本发明示例性实施例的更新机器学习模型的方法中所描述的某些操作可通过软件方式来实现,某些操作可通过硬件方式来实现,此外,还可通过软硬件结合的方式来实现这些操作。
处理器可运行存储在存储部件之一中的指令或代码,其中,所述存储部件还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,所述网络接口装置可采用任何已知的传输协议。
存储部件可与处理器集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储部件可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储部件和处理器可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器能够读取存储在存储部件中的文件。
此外,所述计算装置还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。计算装置的所有组件可经由总线和/或网络而彼此连接。
根据本发明示例性实施例的训练机器学习模型的方法所涉及的操作可被描述为各种互联或耦合的功能块或功能示图。然而,这些功能块或功能示图可被均等地集成为单个的逻辑装置或按照非确切的边界进行操作。
根据本发明示例性实施例的更新机器学习模型的方法所涉及的操作可被描述为各种互联或耦合的功能块或功能示图。然而,这些功能块或功能示图可被均等地集成为单个的逻辑装置或按照非确切的边界进行操作。
例如,如上所述,根据本发明示例性实施例的训练机器学习模型的计算装置可包括存储部件和处理器,其中,存储部件中存储有计算机可执行指令集合,当所述计算机可执行指令集合被所述处理器执行时,执行下述步骤:针对每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数,其中,原始训练样本数据集被划分成多个数据组。
例如,如上所述,根据本发明示例性实施例的更新机器学习模型的计算装置可包括存储部件和处理器,其中,存储部件中存储有计算机可执行指令集合,当所述计算机可执行指令集合被所述处理器执行时,执行下述步骤:当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数,其中,原始训练样本数据集被划分成多个数据组。
以上描述了本发明的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本发明不限于所披露的各示例性实施例。在不偏离本发明的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本发明的保护范围应该以权利要求的范围为准。
Claims (34)
1.一种由计算装置训练机器学习模型的方法,其中,原始训练样本数据集被划分成各个数据组,所述方法包括:
获取所述各个数据组中的多个数据组;
针对所述多个数据组中的每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;
针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
2.如权利要求1所述的方法,其中,生成与每个数据组中出现的全部原始特征id对应的新特征id的步骤包括:
获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数;
针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
3.如权利要求2所述的方法,其中,在第一级索引中,以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与其对应的第一级特征id;
在与每个数据组对应的第二级索引中,以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与其对应的第二级特征id。
4.如权利要求2所述的方法,其中,与每个数据组对应的第二级索引中还存储有该数据组中出现的全部原始特征id的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
5.如权利要求3所述的方法,其中,获取第一级索引的步骤包括:
将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合中;
将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。
6.如权利要求5所述的方法,其中,针对每个数据组,生成与该数据组对应的第二级索引的步骤包括:
针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中;
将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
7.如权利要求5所述的方法,其中,将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引的步骤包括:
将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序后形成的数组作为第一级索引。
8.如权利要求6所述的方法,其中,将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引的步骤包括:
将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。
9.如权利要求8所述的方法,其中,针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程的步骤包括:
针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数;
基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id;
将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
10.如权利要求9所述的方法,其中,由k个参数服务器进程维护所述机器学习模型的特征参数,所述方法还包括:
分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点的数组下标存储为与该数据组对应的分片索引,
其中,针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程的步骤包括:
针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;
针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程,
其中,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素的数组下标,
其中,k为大于0的整数,n为大于0的整数,i为大于0的整数。
11.如权利要求10所述的方法,其中,将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程的步骤包括:
基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组中的分区;
针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
12.一种由参数服务器更新机器学习模型的方法,其中,原始训练样本数据集被划分成多个数据组,所述方法包括:
当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;
基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,
其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
13.如权利要求12所述的方法,其中,基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新的步骤包括:
获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引;
基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id;
使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,
其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应,
其中,与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
14.如权利要求13所述的方法,其中,所述方法还包括:
当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引;
从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素;
将读取的元素发送到所述训练进程。
15.如权利要求14所述的方法,其中,所述方法还包括:
当从训练进程接收到请求时,将所述请求所涉及的第一级特征id划分为j份,其中,j为大于0的整数,
其中,通过j个线程来并行处理所述请求,每个线程处理涉及对应的一份第一级特征id的请求,
其中,所述请求为特征参数获取请求或特征参数更新请求。
16.一种训练机器学习模型的装置,其中,原始训练样本数据集被划分成各个数据组,所述装置包括:
数据组获取单元,被配置为获取所述各个数据组中的多个数据组;
新特征id生成单元,适于针对所述多个数据组中的每个数据组,生成与该数据组中出现的全部原始特征id对应的新特征id,并将该数据组中的每条样本中的原始特征id更新为对应的新特征id,其中,与该数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数;
梯度信息提供单元,适于针对每个被更新了特征id的数据组,基于该数据组中的各条样本中的特征的特征值计算与各个特征对应的梯度信息,并基于新特征id存入一个数组,将所述数组发送到参数服务器进程,以由参数服务器进程基于所述数组更新机器学习模型的特征参数。
17.如权利要求16所述的装置,其中,新特征id生成单元包括:
第一级索引获取单元,适于获取第一级索引,其中,第一级索引中存储有原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,所述等数量的第一级特征id为连续的整数,且每个第一级特征id分别为一个整数;
第二级索引生成单元,适于针对每个数据组,生成与该数据组对应的第二级索引,并将该第二级索引中的第二级特征id作为与该数据组中出现的全部原始特征id对应的新特征id,其中,该第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
18.如权利要求17所述的装置,其中,在第一级索引中,以一维数组的形式存储原始训练样本数据集中出现的全部原始特征id与等数量的第一级特征id之间的对应关系,其中,原始训练样本数据集中出现的全部原始特征id被存储在该一维数组中,每个原始特征id在该一维数组中的数组下标为与其对应的第一级特征id;
在与每个数据组对应的第二级索引中,以一维数组的形式存储该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系,其中,该数据组中出现的全部原始特征id所对应的第一级特征id被存储在该一维数组中,每个第一级特征id在该一维数组中的数组下标为与其对应的第二级特征id。
19.如权利要求17所述的装置,其中,与每个数据组对应的第二级索引中还存储有该数据组中出现的全部原始特征id的数量,以用于为该数据组分配长度为该数量的用于存储梯度信息的数组。
20.如权利要求18所述的装置,其中,第一级索引获取单元适于将原始训练样本数据集中的各条样本中的各个原始特征id存入一个哈希集合中;并将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组作为第一级索引。
21.如权利要求20所述的装置,其中,第二级索引生成单元适于针对每个数据组,将该数据组中的各条样本中的各个原始特征id所对应的第一级特征id存入与该数据组对应的一个哈希集合中;并将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组作为第二级索引。
22.如权利要求20所述的装置,其中,第一级索引获取单元适于将所述哈希集合中的原始特征id存入一个一维数组,并将该一维数组中的数据随机排序后形成的数组作为第一级索引。
23.如权利要求21所述的装置,其中,第二级索引生成单元适于将与该数据组对应的哈希集合中的第一级特征id存入与该数据组对应的一个一维数组,并将该一维数组中的数据按大小排序后形成的数组作为第二级索引。
24.如权利要求23所述的装置,其中,梯度信息提供单元包括:
特征参数获取单元,适于针对每个被更新了特征id的数据组,将包括与该数据组对应的第二级索引的特征参数获取请求发送到参数服务器进程,并从参数服务器进程接收特征参数;
梯度信息获取单元,适于基于接收到的特征参数,计算与该数据组中的每条样本中的每个特征的特征值对应的梯度信息,并基于所述梯度信息对与该数据组对应的用于存储梯度信息的数组进行更新,其中,每计算出与一个特征的特征值对应的梯度信息后,基于该梯度信息对该用于存储梯度信息的数组中的对应元素进行更新,其中,所述对应元素的数组下标为该特征所对应的第二级特征id;
梯度信息发送单元,适于将包括与该数据组对应的第二级索引和用于存储梯度信息的数组的特征参数更新请求发送到参数服务器进程。
25.如权利要求24所述的装置,其中,由k个参数服务器进程维护所述机器学习模型的特征参数,所述装置还包括:
分片索引生成单元,适于分别针对每个数据组,将与该数据组对应的第二级索引划分为与k个参数服务器进程一一对应的k个分区,并将全部分界点的数组下标存储为与该数据组对应的分片索引,
其中,特征参数获取单元适于针对每个被更新了特征id的数据组,基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程;并针对所述每个分区,将包括该分区的特征参数获取请求发送到与该分区对应的参数服务器进程,
其中,如果原始训练样本数据集中出现的全部原始特征id的数量为n,则与数据组对应的第二级索引的第i个分界点为:该第二级索引中数值从右侧最接近(i*n/k)的元素的数组下标,
其中,k为大于0的整数,n为大于0的整数,i为大于0的整数。
26.如权利要求25所述的装置,其中,梯度信息发送单元适于基于与该数据组对应的分片索引确定与该数据组对应的第二级索引的每个分区及其对应的参数服务器进程、所述每个分区所对应的用于存储梯度信息的数组中的分区;并针对与该数据组对应的第二级索引的每个分区,将包括该分区及其对应的用于存储梯度信息的数组中的分区的特征参数更新请求发送到与该分区对应的参数服务器进程。
27.一种参数服务器,其中,原始训练样本数据集被划分成多个数据组,所述参数服务器包括:
梯度信息获取单元,适于当从训练进程接收到与数据组对应的特征参数更新请求时,获取所述特征参数更新请求中包括的用于存储梯度信息的数组;
特征参数更新单元,适于基于与所述数据组中出现的全部原始特征id对应的新特征id,使用获取的数组中的每个元素对用于存储特征参数的数组中与该元素对应的元素进行更新,
其中,与所述数据组中出现的全部原始特征id对应的新特征id为连续的整数,且每个新特征id分别为一个整数。
28.如权利要求27所述的参数服务器,其中,特征参数更新单元包括:
第二级索引获取单元,适于获取所述特征参数更新请求中包括的与所述数据组对应的第二级索引;
第一级特征id确定单元,适于基于获取的第二级索引确定获取的用于存储梯度信息的数组中的每个元素所对应的第一级特征id;
更新单元,适于使用获取的用于存储梯度信息的数组中的每个元素,对用于存储特征参数的数组中数组下标与该元素所对应的第一级特征id相对应的元素进行更新,
其中,用于存储特征参数的数组中的每个元素的数组下标与该元素对应的特征的第一级特征id相对应,
其中,与数据组对应的第二级索引中存储有该数据组中出现的全部原始特征id所对应的第一级特征id与等数量的第二级特征id之间的对应关系。
29.如权利要求28所述的参数服务器,其中,
第二级索引获取单元还适于当从训练进程接收到与数据组对应的特征参数获取请求时,获取所述特征参数获取请求中包括的与所述数据组对应的第二级索引,
其中,所述参数服务器还包括:
特征参数读取单元,适于从用于存储特征参数的数组中读取数组下标与所述第二级索引中的第一级特征id相对应的元素;
特征参数发送单元,适于将读取的元素发送到所述训练进程。
30.如权利要求29所述的参数服务器,其中,所述参数服务器还包括:
请求划分单元,适于当从训练进程接收到请求时,将所述请求所涉及的第一级特征id划分为j份,其中,j为大于0的整数,
其中,通过j个线程来并行处理所述请求,每个线程处理涉及对应的一份第一级特征id的请求,
其中,所述请求为特征参数获取请求或特征参数更新请求。
31.一种包括至少一个计算装置和至少一个存储指令的存储装置的训练机器学习模型的装置,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至11中的任一权利要求所述的由计算装置训练机器学习模型的方法。
32.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至11中的任一权利要求所述的由计算装置训练机器学习模型的方法。
33.一种包括至少一个计算装置和至少一个存储指令的存储装置的参数服务器,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求12至15中的任一权利要求所述的由参数服务器更新机器学习模型的方法。
34.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求12至15中的任一权利要求所述的由参数服务器更新机器学习模型的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911415466.7A CN111144582B (zh) | 2019-12-31 | 2019-12-31 | 训练及更新机器学习模型的方法及相应装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911415466.7A CN111144582B (zh) | 2019-12-31 | 2019-12-31 | 训练及更新机器学习模型的方法及相应装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111144582A CN111144582A (zh) | 2020-05-12 |
CN111144582B true CN111144582B (zh) | 2022-07-05 |
Family
ID=70522751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911415466.7A Active CN111144582B (zh) | 2019-12-31 | 2019-12-31 | 训练及更新机器学习模型的方法及相应装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111144582B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791798A (zh) * | 2020-06-28 | 2021-12-14 | 北京沃东天骏信息技术有限公司 | 模型更新方法及装置、计算机存储介质、电子设备 |
CN111898740B (zh) * | 2020-07-31 | 2021-07-20 | 北京达佳互联信息技术有限公司 | 预测模型的模型参数更新方法及装置 |
CN114385256A (zh) * | 2020-10-22 | 2022-04-22 | 华为云计算技术有限公司 | 系统参数的配置方法和配置装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047790A1 (zh) * | 2017-09-08 | 2019-03-14 | 第四范式(北京)技术有限公司 | 生成机器学习样本的组合特征的方法及系统 |
CN109635948A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 在线训练方法、装置、系统及计算机可读存储介质 |
CN109711422A (zh) * | 2017-10-26 | 2019-05-03 | 北京邮电大学 | 图像数据处理、模型的建立方法、装置、计算机设备和存储介质 |
CN109902820A (zh) * | 2019-02-20 | 2019-06-18 | 腾讯科技(深圳)有限公司 | Ai模型训练方法、装置、存储介质及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160180214A1 (en) * | 2014-12-19 | 2016-06-23 | Google Inc. | Sharp discrepancy learning |
US10685004B2 (en) * | 2016-07-11 | 2020-06-16 | Salesforce.Com, Inc. | Multiple feature hash map to enable feature selection and efficient memory usage |
US10810492B2 (en) * | 2017-01-27 | 2020-10-20 | Hewlett Packard Enterprise Development Lp | Memory side acceleration for deep learning parameter updates |
-
2019
- 2019-12-31 CN CN201911415466.7A patent/CN111144582B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047790A1 (zh) * | 2017-09-08 | 2019-03-14 | 第四范式(北京)技术有限公司 | 生成机器学习样本的组合特征的方法及系统 |
CN109711422A (zh) * | 2017-10-26 | 2019-05-03 | 北京邮电大学 | 图像数据处理、模型的建立方法、装置、计算机设备和存储介质 |
CN109635948A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 在线训练方法、装置、系统及计算机可读存储介质 |
CN109902820A (zh) * | 2019-02-20 | 2019-06-18 | 腾讯科技(深圳)有限公司 | Ai模型训练方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111144582A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111144582B (zh) | 训练及更新机器学习模型的方法及相应装置 | |
CN109977077B (zh) | 模型文件存储方法、装置、可读存储介质和计算机设备 | |
US10585915B2 (en) | Database sharding | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
US11023430B2 (en) | Sparse dictionary tree | |
JP2012038317A (ja) | データセンター顧客費用決定メカニズム | |
CN110825794B (zh) | 分区合并方法和数据库服务器 | |
CN101681297A (zh) | 存储器分配的设置 | |
US10191998B1 (en) | Methods of data reduction for parallel breadth-first search over graphs of connected data elements | |
US11126607B1 (en) | Memory-aware system and method for identifying matching portions of two sets of data in a multiprocessor system | |
CN111459677A (zh) | 请求分配方法、装置、计算机设备和存储介质 | |
CN112306682B (zh) | 一种模型参数的存储方法和系统以及一种参数服务器集群 | |
US20180046398A1 (en) | Repartitioning data in a distributed computing system | |
CN111177144A (zh) | 表同步方法、装置、设备、存储介质及系统 | |
CN112906825A (zh) | 实现机器学习模型的分布式训练的方法和计算节点 | |
CN110597879B (zh) | 时序数据的处理方法和装置 | |
CN113672375A (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN107204998B (zh) | 处理数据的方法和装置 | |
CN111338778B (zh) | 任务调度方法、装置、存储介质及计算机设备 | |
CN111428114A (zh) | Elasticsearch搜索引擎的索引创建方法及装置 | |
CN112000698B (zh) | 日志的记录方法及装置、存储介质、电子装置 | |
CN115203210A (zh) | 哈希表处理方法、装置、设备及计算机可读存储介质 | |
US20190227852A1 (en) | Method for automatically and dynamically assigning the responsibility for tasks to the available computing components in a highly distributed data-processing system | |
CN114626103A (zh) | 数据一致性比对方法、装置、设备及介质 | |
CN116069788B (zh) | 数据处理方法、数据库系统、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |