【vLLM 学习】Aqlm 示例

部署运行你感兴趣的模型镜像

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

源代码:vllm-project/vllm

from vllm import LLM, SamplingParams
from vllm.utils import FlexibleArgumentParser


def main():

    parser = FlexibleArgumentParser(description='AQLM examples')

    parser.add_argument('--model',
 '-m',
 type=str,
                        default=None,
 help='model path, as for HF')
    parser.add_argument('--choice',
 '-c',
 type=int,
                        default=0,
 help='known good models by index, [0-4]')
    parser.add_argument('--tensor-parallel-size',
 '-t',
 type=int,
                        default=1,
 help='tensor parallel size')

    args = parser.parse_args()

    models = [
 "ISTA-DASLab/Llama-2-7b-AQLM-2Bit-1x16-hf",
 "ISTA-DASLab/Llama-2-7b-AQLM-2Bit-2x8-hf",
 "ISTA-DASLab/Llama-2-13b-AQLM-2Bit-1x16-hf",
 "ISTA-DASLab/Mixtral-8x7b-AQLM-2Bit-1x16-hf",
 "BlackSamorez/TinyLlama-1_1B-Chat-v1_0-AQLM-2Bit-1x16-hf",
 ]

    model = LLM(args.model if args.model is not None else models[args.choice],
                tensor_parallel_size=args.tensor_parallel_size)

    sampling_params = SamplingParams(max_tokens=100, temperature=0)
    outputs = model.generate("Hello my name is",
                             sampling_params=sampling_params)
 print(outputs[0].outputs[0].text)


if __name__ == '__main__':
    main()

您可能感兴趣的与本文相关的镜像

Vllm-v0.11.0

Vllm-v0.11.0

Vllm

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值

### 不同比特数下的模型微调方法及其优化算法 #### 6-bit Full Parameter Fine-Tuning (FPFT) 全参数微调是一种常见的技术,在任务性能至关重要的情况下能提供最佳效果[^1]。然而,对于量化到较低位宽(如6-bit)的模型而言,这种微调方式可能会面临梯度消失或爆炸的问题。因此,为了实现有效的6-bit FPFT,通常会结合一些先进的优化器和技术来稳定训练过程。 ```python import torch.nn as nn from transformers import Trainer, TrainingArguments def six_bit_fpft(model, dataset): optimizer = BAdam(model.parameters(), lr=0.001) # 使用BAdam作为优化器 training_args = TrainingArguments(output_dir="./results", num_train_epochs=3) trainer = Trainer( model=model, args=training_args, train_dataset=dataset, optimizers=(optimizer,) ) trainer.train() ``` #### Frozen Fine-Tuning 冻结微调是指仅更新部分网络层权重的方法。这种方法特别适合资源受限场景下运行大语言模型的任务。尽管如此,它可能无法充分利用整个模型的能力,尤其是在处理复杂任务时。 ```python for param in model.base_model.parameters(): param.requires_grad = False # 只解冻分类头或其他特定模块 model.classifier.weight.requires_grad = True ``` #### Low-Rank Adapter Tuning (LoRA) 低秩适配微调通过引入额外的小规模矩阵分解结构来减少计算开销并保持良好的泛化能力。相比传统全量调整策略,它可以显著降低内存消耗和推理延迟时间。 ```python config.lora_rank = 8 lora_config = LoRAConfig(r=config.lora_rank, loras={}) apply_lora(lora_config, model) trainer = Trainer(...) trainer.add_callback(LogCallback()) ``` #### Quantized LoRA (QLoRA) 基于量化的大规模预训练模型上应用LoRA技术被称为Quantized LoRA(QLoRA)[^3]。此方案允许我们利用诸如AQLM、AWQ等高效压缩框架进一步缩小模型尺寸而不损失太多精度。 ```python quantization_method='awq' template_fn, _ = get_template_and_fix_tokenizer(quantization_method) model = template_fn(load_model('llama'), **kwargs).to(device) run_sft(model, ...) ``` 上述四种主要类型的细粒度调节各有千秋,具体选择取决于实际应用场景需求以及硬件条件限制等因素。与此同时,还有多种新型优化算法被开发出来用于加速收敛速度或者改善最终结果质量: - **GaLore**: 集成全局与局部信息的学习率调度机制; - **DoRA**: 动态对象关系注意机制辅助序列建模; - **LongLoRA**: 扩展长度支持超长上下文输入; - ...等等其他创新性解决方案不断涌现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值