首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

利用“分而治之”的对比学习方法来进行大规模细胞表征学习的研究

今天为大家介绍的是来自清华研究大学团队的一篇论文。单细胞RNA测序(scRNA-seq)数据是理解“生命之语”的强大工具,能为各种生物医学任务提供新见解。近来,大规模语言模型(LLMs)开始用于细胞表征学习。但现有基于BERT架构的细胞表征学习方法存在问题,它们产生的嵌入空间不均匀,导致语义表达效率不高。对比学习通过均匀分布嵌入来解决这个问题。然而,对比学习中更大的批量大小能带来更好的表征,但scRNA-seq数据的高维性和LLMs的大参数量限制了其实际应用。为解决这个问题,作者提出了一种新颖的“分而治之”对比学习方法,它能够解耦批量大小和GPU内存大小的关系,用于细胞表征学习。基于这种方法,作者介绍了单细胞语言模型(CellLM),这是一个大规模的细胞表征学习模型,能够处理包含成千上万基因的高维scRNA-seq数据。CellLM拥有超过5000万个参数,利用200万个scRNA-seq数据进行训练,它是首次尝试从正常细胞和癌细胞中学习细胞语言模型。CellLM在所有评估的下游任务中都达到了新的最先进水平。

01

GPT-4的详细信息已经泄露

这位作者说GPT-4的详细信息已经泄露,不知道可信度如何。一些关键信息:- GPT-4的大小是GPT-3的10倍以上。我们认为它在120层中总共有大约1.8万亿个参数。- GPT-4是多个专家模型混合在一起,但不是之前说的8个专家,而是16个。研究人员已经证明,使用64到128个专家比16个专家能够获得更好的损失,但这只是纯粹的研究。OpenAI选择16个专家的一个原因是,更多的专家在许多任务上难以泛化。更多的专家也可能更难以达到收敛。- 预训练阶段的上下文长度(seqlen)为8k。GPT-4的32k seqlen版本是在预训练后对8k进行微调的结果。- 为了在所有的A100s GPUs上并行化,他们使用了8路张量并行,因为这是NVLink的限制。- 如果他们在云中的成本约为每小时1美元/A100,那么这次运行的训练成本将约为6300万美元。- GPT-4推理成本是175B参数的Davinchi的3倍。这主要是由于GPT-4需要更大的集群和实现的利用率更低。它的成本估计是0.0049/ 1K tokens。(目前GPT-4的API价格大约是

02

ArrayList扩容机制。

1)直接new 一个ArrayList对象时(未指定初始容量大小)是一个空的数组,容量大小为零。 public ArrayList() { // DEFAULTCAPACITY_EMPTY_ELEMENTDATA 变量为一个空的数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } 2)、当第一次调用ArrayList对象的add方法时,分配容量大小 public boolean add(E e) { // size 为ArrayList的实际数量大小而非容量大小,如果未指定容量构建的ArrayList对象此时size对象应该为0 ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { // 如果为空数组,最小需要容量为默认最小容量DEFAULT_CAPACITY 也就是10 private static final int DEFAULT_CAPACITY = 10; if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } // 调用扩容方法 ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // 如果最小的需要容量大于此时的容量,调用真正的扩容方法 // overflow-conscious code if (minCapacity – elementData.length > 0) grow(minCapacity); } private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; // 第一次扩容1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1); // 还是比需要的容量小就把需要的容量作为新的容量值 if (newCapacity – minCapacity < 0) newCapacity = minCapacity; // 如果此时的新的容量比最大容量还大则比较需求容量和数组最大容量的大小, 如果比最大容量大就赋值为整数最大值,反之赋值为最大容量。 这里主要防止1.5倍扩容导致新容量值超过数组最大容量 if (newCapacity – MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: // 进行一个复制操作 elementData = Arrays.copyOf(elementData, newCapacity); } private static int hugeCapacity(int minCapacity) { if (minCapacity < 0) // overflow throw new OutOfMem

02

学界 | 深度神经网络的分布式训练概述:常用方法和技巧全面总结

深度学习已经为人工智能领域带来了巨大的发展进步。但是,必须说明训练深度学习模型需要显著大量的计算。在一台具有一个现代 GPU 的单台机器上完成一次基于 ImageNet 等基准数据集的训练可能要耗费多达一周的时间,研究者已经观察到在多台机器上的分布式训练能极大减少训练时间。近期的研究已经通过使用 2048 个 GPU 的集群将 ImageNet 训练时间降低至了 4 分钟。这篇论文总结了各种用于分布式训练的算法和技术,并给出了用于现代分布式训练框架的当前最佳方法。更具体而言,我们探索了分布式随机梯度下降的同步和异步变体、各种 All Reduce 梯度聚合策略以及用于在集群上实现更高吞吐量和更低延迟的最佳实践,比如混合精度训练、大批量训练和梯度压缩。

02

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券