# 煤矿安全大模型——矿途智护者 ## 项目背景 - 国家高度重视煤矿安全生产工作,提高从业人员的安全知识水平,是煤矿安全管理的重要基础。 - 安全管理领域积累了海量数据,但难以为安全决策所利用。 - 根据国家矿山安监局统计:90%以上煤矿事故都与人的不安全行为有关。 ## 主要功能 - 支持煤矿安全领域常规题型解答,如:单选题、多选题、判断题、填空题等 (针对煤矿主要负责人及安管人员、煤矿各种作业人员) - 支持针对安全规程规章制度、技术等文档内容回答(如《中华人民共和国矿山安全法》、《煤矿建设安全规程》) - 支持煤矿历史事故案例,事故处理报告查询,提供事故原因详细分析、事故预防措施以及应急响应知识 ## 创建环境 ```shell conda create -n CoalLLM python=3.10 conda activate CoalLLM ``` ## 依赖包安装 ```shell pip install modelscope[framework] # 模型库 pip install py-data-juicer[sci] # 数据处理库 pip install ms-swift[llm] # 训练库 pip install ms-swift[eval] # 评测库 ``` ## 数据构建 输入如下命令,会在data目录下生成CoalQA_data.json ```shell git clone https://gitlink.org.cn/yaosenJ/Coal_Mine_SAFETY.git cd Coal_Mine_SAFETY/data_process python Generate_QAdata.py ../data/CoalQA_data.json ``` CoalQA_data.json内容结构形如: ```json [ { "instruction": "请提供新建矿井立井井筒冻结法施工的具体要求。", "output": "新建矿井立井井筒冻结法施工需要遵守以下要求:冻结深度必须穿过风化带延深至稳定的基岩10m以上,第一个冻结孔必须全孔取芯,钻孔时必须测定钻孔的方向和偏斜度,偏斜度超过规定时必须及时纠正,冻结管必须采用无缝钢管并焊接或螺纹连接,开始冻结后必须经常观察水文观测孔的水位变化,并在确定冻结壁已交圈后才能进行试挖。" }, ... ] ``` ## 模型训练 安装 flash-attention 加快推理速度 ```shell pip install flash-attn --no-build-isolation ``` 使用ms-swift训练模型 ```shell !CUDA_VISIBLE_DEVICES=0 swift sft \ --sft_type lora \ --model_type internlm2_5-7b-chat \ --model_id_or_path /root/share/new_models/Shanghai_AI_Laboratory/internlm2_5-7b-chat \ --dataset /root/Coal_Mine_SAFETY/data/data.json\ --system "你是一个煤矿安全领域的知识达人,你对相关煤矿安全规章规程制度、技术等文档非常熟悉。请你专业正确地解答用户想问的煤矿安全相关问题。" \ --dataset_test_ratio 0.01 \ --output_dir output \ --lora_target_modules ALL \ --lora_rank 8 \ --dtype bf16 \ --seed 42 \ --learning_rate 1e-4 \ --warmup_ratio 0.05 \ --max_length 2048 \ --batch_size 4 \ --eval_batch_size 4 \ --num_train_epochs 3 \ --gradient_accumulation_steps 4 \ --save_total_limit 5 \ --eval_steps 100 \ --save_steps 100 ``` **显存占用**