主要观点:
- 作者介绍了 PyCharm 中的Full Line Code Completion产品,认为其设计周到、不干扰且能提高开发效率,还在GoLand中使用。
- 强调了打印语句调试和写好日志在工作流程中的重要性,以及 f-strings 写日志的重复性问题。
- 介绍了 Full-line-code completion 的工作原理,模型完全在本地,通过输入文件扩展名、文件路径和输入光标上方的代码部分进行推断,输出 384 字符以内的内容以加快工作流程,且输出比人工写的更清晰,调试后也有价值。
- 详细阐述了该功能的实现过程,模型在 PyTorch 中训练并量化,使用特定的数据集和训练方法,实际插件用 Kotlin 实现,利用本地 C++服务器和 ONNX RT 工件进行推理,使用 beam search 等策略,还有其他一些架构和模型决策。
- 总结认为该体验很周到,在打印日志调试和生产日志中都节省了时间,在大语言模型领域,大而通用的模型和小模型都有其位置。
关键信息:
- 产品名称及链接:Full Line Code Completion
- 相关工具:PyCharm、GoLand
- 日志相关:打印语句调试重要,f-strings 写日志有重复性问题,Full-line-code completion 输出的日志更清晰
- 模型实现:在 PyTorch 中训练并量化,使用特定数据集和训练方法,本地 C++服务器和 ONNX RT 工件推理,beam search 策略等
- 作者感受:节省时间,体验周到
重要细节:
- 训练数据集:The Stack 的子集,6TB 代码,30 种编程语言,初始训练集 45GB,去除代码注释
- 模型架构:GPT-2 风格解码器-only 模型,1 亿参数,后改为 Llama2 架构
- 令牌化:针对 Python 用 BPE 风格令牌化,对空格和制表符转换处理,令牌器词汇量 16384
- 训练评估:split 为 train/test 进行评估,在 8 个 NVidia A100 GPU 上训练几天,使用交叉熵损失目标函数
- 模型压缩:从 FP32 量化到 INT8,从 400MB 压缩到 100MB
- 推理策略:使用 beam search,最大波束数 20,限制生成到以换行符结尾的假设,初始化模型预加载约 192 字符的代码等
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。