很高兴向大家介绍 InternLM2.5-7B-Chat-1M,它拥有处理超长文本的能力,支持长达 1M tokens 的输入。
在预训练阶段,我们使用了包含长度为 256K tokens 的语料训练。为了应对由于数据同质可能引起的领域偏移问题,我们在训练过程中引入了合成数据,不仅保持了模型的能力,还增强了其对上下文的理解程度。
在“大海捞针”实验中,InternLM2.5-7B-Chat-1M 能够在长达 1M tokens 的文档中准确地定位关键信息。
同时,我们还采用了 LongBench 基准来评估长文档理解能力。InternLM2.5-7B-Chat-1M 在测试中相较于同类型的模型达到了最佳性能。
下面介绍如何使用 InternLM2.5-7B-Chat-1M 来根据输入文档进行聊天。为了获得最佳性能,尤其是在处理长文本输入时,我们推荐使用 LMDeploy 来进行模型部署。
当前版本支持 PDF、TXT 和 Markdown 三类文件。未来我们将很快支持更多文件类型!
- TXT 和 Markdown 文件:直接读取,无需转换。
- PDF 文件:为了高效处理 PDF 文件,我们推出了轻量级的开源工具 Magic-Doc ,其可以将多种文件类型转换为 Markdown 格式。
开始前,请安装所需的依赖:
pip install "fairy-doc[cpu]"
pip install streamlit
pip install lmdeploy
从 model zoo 下载模型。
通过以下命令部署模型。用户可以指定 session-len
(sequence length)和 server-port
来定制模型推理。
lmdeploy serve api_server {path_to_hf_model} \
--model-name internlm2-chat \
--session-len 65536 \
--server-port 8000
要进一步增加序列长度,建议添加以下参数:
--max-batch-size 1 --cache-max-entry-count 0.7 --tp {num_of_gpus}
streamlit run long_context/doc_chat_demo.py \
-- --base_url http://0.0.0.0:8000/v1
用户可以根据需要指定端口。如果在本地运行 demo,URL 可以是 http://0.0.0.0:{your_port}/v1
或 http://localhost:{your_port}/v1
。对于云服务器,我们推荐使用 VSCode 来启动 demo,以实现无缝端口转发。
对于长输入,我们建议使用以下参数:
- Temperature: 0.05
- Repetition penalty: 1.02
当然,用户也可以根据需要在 web UI 中调整这些参数以获得最佳效果。
下面是效果演示视频:
doc-chat-demo.mp4
我们将不断优化和更新长文本模型,以提升其在长文本上的理解和分析能力。敬请关注!