roberta模型、bert模型可以用vllm部署了

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

OpenAI Embedding Client — vLLM

https://github.com/huggingface/text-embeddings-inference

打好镜像之后在部署服务的时候:

text-embeddings-router --model-id /mnt/model --port 8811 [--pooling cls,可有可无] --dtype float16 --json-output [还有一些其他参数,参考hf那个链接]

使用代码:(我是并发,异步使用的)

MAX_CHARS = 500
input_texts = [text[:MAX_CHARS] for text in examples]#要么部署的时候设置一下最大token数,要么在这里自行截断

async def _process_batch_async(self, session, batch_texts, batch_qids, batch_idx, max_retries=1):
        """Processes a single batch asynchronously with retries."""
        payload = {"inputs": batch_texts}
        for attempt in range(max_retries):
            try:
                async with session.post(self.api_url, json=payload, timeout=30.0) as response:
                    response.raise_for_status()
                    response_json = await response.json()
                    
                    batch_results = {}
                    for j, data in enumerate(response_json):
                        batch_results[batch_qids[j]] = data
                    
                    return batch_results
            except Exception as e:
                if attempt + 1 == max_retries:
                    return {} # Return empty dict on failure
                await asyncio.sleep(1) # Wait 1 second before retrying

tasks = []
async with aiohttp.ClientSession() as session:
    for i in range(0, len(input_texts), batch_size):
        batch_texts = input_texts[i:i + batch_size]
        batch_qids = qids[i:i + batch_size]
        task = self._process_batch_async(session, batch_texts, batch_qids, i)
        tasks.append(task)
            
    batch_results_list = await asyncio.gather(*tasks)
            
    for batch_results in batch_results_list:
        if batch_results:
           dqid2emb.update(batch_results)

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

Vllm-v0.11.0

Vllm-v0.11.0

Vllm

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

### RoBERTa模型Bert模型在自然语言处理中的优劣对比 #### 优点 对于RoBERTa而言,改进了训练过程使得其性能有所提升。具体来说,在预训练阶段采用了动态masking策略而非静态masking,这意味着每次前向传播过程中被遮蔽的token都是随机选取的,这有助于提高模型泛化能力[^6]。 而原始版本的BERT则开创性地引入了Transformer架构下的双向编码器表示方法,通过masked language modeling(MLM)和next sentence prediction(NSP)两种任务来进行无监督学习,从而能够捕捉到更丰富的上下文信息[^7]。 #### 缺点 尽管如此,BERT存在一些局限性:一方面是因为它固定了输入序列长度上限;另一方面在于多层堆叠结构可能导致梯度消失等问题影响深层网络效果。此外,由于加入了NSP任务,使得联合训练变得复杂并增加了计算成本[^8]。 相比之下,RoBERTa去除了NSP目标函数,并且利用更大的batch size以及更多的训练数据来进一步优化参数估计精度。不过这种做法也带来了新的挑战——即所需硬件资源消耗更大,对算力的要求更高[^9]。 ```python from transformers import BertTokenizer, RobertaTokenizer bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') roberta_tokenizer = RobertaTokenizer.from_pretrained('roberta-base') text = "Transformers library simplifies working with state-of-the-art NLP models." print(f"BERT Tokenization: {bert_tokenizer.tokenize(text)}") print(f"RoBERTa Tokenization: {roberta_tokenizer.tokenize(text)}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值