分类 "Ai" 下的文章

方法核心原理优点缺点典型使用场景
全参数微调调整预训练模型的所有参数,完全适配下游任务。1. 性能最优,充分挖掘模型潜力
2. 适用性广,不受任务复杂度限制
1. 显存和计算资源消耗大(如70B模型需数百GB显存)
2. 训练时间长,易过拟合
资源充足的高精度任务(如专业领域生成、复杂推理)
LoRA冻结原模型权重,注入可训练的低秩矩阵(A、B)模拟参数增量,仅更新0.01%-1%参数1. 显存需求低(7B模型仅需14GB)
2. 无推理延迟,权重可合并
3. 支持多任务模块化切换
1. 低秩近似可能损失性能(复杂任务)
2. 需手动调整秩(r)和缩放系数(α)
资源受限的多任务适配(如对话生成、分类任务)
QLoRA在LoRA基础上引入4-bit量化,反量化计算梯度,进一步降低显存1. 显存较LoRA再降33%(如21GB→14GB)
2. 保留LoRA灵活性的同时突破显存限制
1. 训练时间增加约39%
2. 量化可能引入精度损失(极端低bit时)
超大规模模型微调(如千亿参数)或消费级GPU(如单卡12GB)

阅读全文

一、Diffusion模型:生成式AI的新星

Diffusion模型(扩散模型)是近年来兴起的一类生成模型,其灵感来源于物理学中的扩散现象,如同墨水滴入水中逐渐扩散的过程。Diffusion模型通过模拟数据的逐步噪声添加和去除过程来学习数据分布,已成为图像生成领域的新标杆。

核心原理与工作流程
Diffusion模型包含两个关键过程:前向扩散过程反向去噪过程。前向过程逐步向数据添加高斯噪声,将复杂的数据分布逐渐转化为简单的高斯分布;反向过程则学习如何从噪声中逐步重建原始数据。具体而言,给定原始数据x₀,前向过程在T步内逐步生成噪声增加的x₁到x_T,最终x_T成为纯噪声;反向过程则训练一个去噪网络,学习从x_t预测x_{t-1},从而能够从随机噪声生成新样本。

阅读全文

1. SAM2 核心功能

SAM2 是 Meta 推出的新一代图像与视频分割基础模型,基于第一代 SAM 改进,具备以下核心功能:

  • 统一架构:同时支持图像和视频分割,通过流式处理框架实现实时分割(44 FPS),尤其擅长处理动态场景和长视频。
  • 零样本泛化:无需特定训练即可分割未见过的物体或视觉域(如医学影像中的罕见病变)。
  • 交互式分割:支持点、框、掩码等多种提示方式,允许用户通过点击或框选细化分割结果。
  • 记忆机制:通过流式记忆模块跟踪视频中的对象,解决遮挡、光照变化等问题,确保跨帧分割一致性。
  • 多掩码预测:在复杂场景(如重叠物体)中生成多个候选掩码,并通过置信度选择最优结果。

阅读全文

问题:调用合约方法时报错Error: Returned error: VM Exception while processing transaction

解决:参数传递错误导致require条件修饰符不满足,web3.js是1.7

方法:

部署合约时传的参数alice是小写开头的,且为byte32

console.time('deploy time');
const myContract = await new web3.eth.Contract(JSON.parse(interface));
myContract.deploy({
    data: bytecode,
    arguments: [[web3.utils.asciiToHex('alice'), web3.utils.asciiToHex('bob')]]
})
.send({
    from: accounts[0],
    gas: 1500000,
    gasPrice: '30000000000000'
})
.then(function(newContractInstance){
    console.log('合约部署成功:', newContractInstance.options.address) // instance with the new contract address
});

阅读全文

问题:以太坊合约部署失败,报错:TypeError: param.map is not a function 或者 Error: Invalid number of parameters for "undefined". Got 2 expected 1!

解决:官方文档写的比较特别,所以被误导了。web3使用的是1.7.0

方法:
官方文档:

const myContract = await new web3.eth.Contract(JSON.parse(interface));    
myContract.deploy({
    data: '0x12345...',
    arguments: [123, 'My String']
})
.send({
    from: '0x1234567890123456789012345678901234567891',
    gas: 1500000,
    gasPrice: '30000000000000'
}, function(error, transactionHash){ ... })
.on('error', function(error){ ... })
.on('transactionHash', function(transactionHash){ ... })
.on('receipt', function(receipt){
   console.log(receipt.contractAddress) // contains the new contract address
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.then(function(newContractInstance){
    console.log(newContractInstance.options.address) // instance with the new contract address
});

阅读全文