mHumanEval - A Multilingual Benchmark to Evaluate Large Language Models for Code Generation

本文是LLM系列文章,针对《mHumanEval - A Multilingual Benchmark to Evaluate Large Language Models for Code Generation》的翻译。

mHumanEval - 用于评估用于代码生成的大型语言模型的多语言基准测试

摘要

大型语言模型 (LLM) 的最新进展显著增强了从自然语言提示生成代码的能力。由 OpenAI 开发的 HumanEval 基准测试仍然是使用最广泛的代码生成基准测试。然而,这个和其他 Code LLM 基准测试面临着严重的限制,特别是在任务多样性、测试覆盖率和语言范围方面。当前的评估主要集中在测试用例有限的英语到 Python 转换任务上,可能会高估模型性能。虽然最近的工作解决了测试覆盖率和编程语言 (PL) 多样性,但从低资源语言提示生成代码在很大程度上仍未得到探索。为了解决这一差距,我们引入了 mHumanEval,这是一个支持 200 多种自然语言的提示的扩展基准测试。我们采用成熟的机器翻译方法来编译基准测试,并结合质量保证流程。此外,我们还为 15 种不同的自然语言 (NL) 提供专业的人工翻译。最后,我们分析了最先进 (SOTA) 代码 LLM 的多语言代码生成功能,从而提供了对跨语言代码生成的当前前景的见解。

1 引言

2 相关工作

### 大型语言模型作为生成式多语言语音和机器翻译系统的概述 大型语言模型(LLMs)由于其强大的参数规模和预训练机制,能够处理多种自然语言任务。这些模型不仅限于单一语言环境,还展示了出色的跨语言迁移能力[^1]。 #### 跨语言表示学习中的挑战与解决方案 尽管ML LMs表现出显著的零样本跨语言迁移性能,但在实际应用中仍面临一些障碍。研究指出,在多语言嵌入空间里存在着强烈的语言身份特征,这会干扰语义信息的有效传递。为此,Xie等人提出了通过识别并消除低秩子空间来改善这一状况的方法。这种方法可以有效减少语法和其他非语义因素的影响,从而提高跨语言任务的表现[^2]。 #### 应用于生成式多语言语音合成 当涉及到生成式的多语言语音合成功能时,LLM可以通过理解不同语言之间的细微差别以及它们各自的发音规则来进行高质量的声音再现。借助先进的声码器技术,如WaveNet或Tacotron系列架构,结合精心设计的文字转音素映射算法,使得即使是对不常见字符也能实现逼真的发声效果。此外,利用上述提到的技术去除不必要的语言特性可以帮助创建更加通用且适应性强的TTS(Text-to-Speech)系统。 ```python import torch from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53") def transcribe_speech(audio_input): inputs = processor(audio_input, sampling_rate=16000, return_tensors="pt", padding=True) with torch.no_grad(): logits = model(**inputs).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = processor.batch_decode(predicted_ids)[0] return transcription ``` #### 实现高效的机器翻译服务 对于构建高效可靠的MT(Machine Translation)平台而言,LLM同样扮演着重要角色。通过对大量平行文本数据集的学习,加上适当的微调过程,可以使模型更好地捕捉源目标语言间的转换规律。特别是采用去除了特定语言属性后的向量表征方式后,进一步增强了对未知领域话题的理解力和服务质量稳定性。 ```python from transformers import MarianTokenizer, MarianMTModel tokenizer = MarianTokenizer.from_pretrained('Helsinki-NLP/opus-mt-en-zh') model = MarianMTModel.from_pretrained('Helsinki-NLP/opus-mt-en-zh') def translate_text(input_text): batch = tokenizer([input_text], return_tensors='pt', truncation=True, max_length=512) generated_ids = model.generate(**batch) translated_texts = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) return translated_texts[0] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值