本项目开源了经过中文建筑学指令精调/指令微调(Instruct-tuning)的LLaMA-7B模型。我们通过采集建筑行业基础资料,构建建筑行业数据集,对LLaMA进行了指令微调,提高了LLaMA在中文建筑领域的问答效果。
目前我们只开放针对基础建筑行业知识的模型参数。在未来,我们计划添加更多建筑专业相关领域的数据集(中外古建筑、建筑行业规范和标准、建筑结构、建筑设计原理等),并针对不同建筑领域和建筑类型训练模型。
- Web Demo 体验地址 sikong
- [2023/07/04]司空SiKong 中文建筑行业大模型开源发布。
- [2023/07/08]增加了基于中文Alpaca大模型进行指令微调的模型发布。
- [2023/07/11]增加了基于LLaMA和中文建筑规范进行指令微调的模型发布。
- [2023/07/15]增加了基于LLaMA和中文建筑资料集进行指令微调的模型发布。
- 本地克隆
sikong
项目仓库
# github 仓库
git clone https://github.com/SikongSphere/sikong.git
# gitee 仓库
git clone https://gitee.com/sikongsphere/sikong.git
- 创建虚拟环境并安装第三方库
请确保本地已经安装conda
且可用, 并根据如下命令创建环境
conda env create -f environment.yaml
conda activate sikong
- 下载托管在
huggingface
的建筑领域语言大模型sikong
,并放置在model
文件夹内
已进行微调的模型:
cd model
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/SikongSphere/sikong-llama-7b-chinese
# if you want to clone without large files – just their pointers
# prepend your git clone with the following env var:
GIT_LFS_SKIP_SMUDGE=1
- 启动聊天界面
./scripts/run_app.sh
启动服务后,可以打开127.0.0.1:6006
查看聊天界面。若想替换模型,可以在run_app.sh
中更改模型的路径。
sikong
建筑领域大模型对于输入数据的要求格式如下所示:
{
"type": "text2text",
"instance": [
{
"input": "建筑艺术创作中的核心问题是什么?",
"output": "建筑的空间与实体,是对立统一的两个方面,抓住它并认真地去剖析,运用一定的构图技法把它解决好,则是建筑艺术创作中非常重要的核心问题。"
}
]
}
为方便用户录入数据并转换为目标json
格式,我们提供了格式转换的脚本,其位置位于scripts/data_preprocess/csv2json.py
,具体用法为:
python scripts/data_preprocess csv2json.py --csv data/example.csv --json data/example.json
需要注意的是,在转换json
数据后,需要利用script/add_end_mark.py
对其添加停用词。
如果用户需要对模型进行微调,可以使用如下命令:
./scripts/run_finetune.sh
可在run_finetune.sh
文件中更改具体参数,以符合具体需求。
其中具体的训练细节已经上传至wandb
,通过点击此处查看训练详情。
sikong
训练资源:
GPU
:A100-PCIE-40GB
* 4卡CPU
:40 vCPU Intel Xeon Processor (Skylake, IBRS)
内存
288GB
为了展示司空语言大模型的能力,我们展示如下几组测试。
- 测试输入:
- 请介绍一下变形缝的概念。
- Llama输出:
- 变形缝是一种可以改变形状的缝。
- Alpaca输出:
- 变形缝是一种特殊的缝合技术,它可以将两个物体结合在一起,而不需要使用任何粘合剂。
- ChatGLM输出:
- 变形缝通常由混凝土或砖石等建筑材料制成,其目的是在地震或自然灾害时,使岩石形成隔离缝,防止相邻的岩石受到更大的破坏。
- SiKong司空输出:
- 变形缝是指将建筑物垂直分开的预留缝。由于温度变化、地基不均匀沉降和地震因素的影响,易使建筑物发生裂缝或破坏,故在设计时应事先将房屋划分成若干个独立的部分,使各部分能自由地变化。
- 测试输入:
- 图书馆中书架之间以及书架与墙体之间通道的最小宽度是多少?
- Llama输出:
- 1.5m
- Alpaca输出:
- 书架之间通道的最小宽度是0.5厘米,书架与墙体之间通道的最小宽度是0.5厘米。
- ChatGLM输出:
- 图书馆中书架之间以及书架与墙体之间通道的最小宽度取决于不同国家和地区的法规和规定。一般来说,图书馆的书架通道应该保证书籍的流通和检索,因此最小宽度应该能够容纳一个人的步行距离。
- SiKong司空输出:
- 按照《图书馆建筑设计规范》(JGJ 38-2015)中规定,图书馆中书架之间以及书架与墙体之间通道的最小宽度按通道类型划分为以下几种情况:
- 主通道中,开架的常用书架间隔不小于1.5m,闭架的常用书架间隔不小于1.2m,不常用书架间隔不小于1m;
- 次通道中,开架的常用书架间隔不小于1.1m,闭架的常用书架间隔不小于0.75m,不常用书架间隔不小于0.6m;
- 档头走道(即靠墙走道)中,开架的常用书架间隔不小于0.7m,闭架的常用书架间隔不小于0.6m,不常用书架间隔不小于0.6m;
- 行道中,开架的常用书架间隔不小于1m,闭架的常用书架间隔不小于0.75m,不常用书架间隔不小于0.6m。
- 按照《图书馆建筑设计规范》(JGJ 38-2015)中规定,图书馆中书架之间以及书架与墙体之间通道的最小宽度按通道类型划分为以下几种情况:
- 测试输入:
- 在中国建筑设计防火规范中,重要公共建筑是什么?
- Llama输出:
- “重要公共建筑”指在中国建造的具有特殊社会功能、影响面广、对社会和经济发展有显著作用的建筑。
- Alpaca输出:
- 在中国建筑设计防火规范中,重要公共建筑是指一类公共建筑,包括医院、学校、博物馆、图书馆、商场、政治机关、金融机构等,这些建筑的使用功能复杂,人员密集,且具有较高的火灾危险。
- ChatGLM输出:
- 在中国建筑设计防火规范中,重要公共建筑是指一类公共建筑,包括医院、学校、博物馆、图书馆、商场、政治机关、金融机构等,这些建筑的使用功能复杂,人员密集,且具有较高的火灾危险。
- SiKong司空输出:
- 在《建筑设计防火规范》中,重要公共建筑是指发生火灾可能造成重大人员伤亡、财产损失和严重社会影响的公共建筑。
-
Q:为什么在输入后出现模型自问自答的情况?
A:若出现这种情况,请对输入句末尾添加
##
并再次输入。 -
Q:为什么叫做SiKong(司空)
A:因为司空是中国古代的一种官职,主要负责国家的城市建设和水利枢纽建设,同样也是司空学社的命名由来。本大模型采用司空这种称号,其实也是希望能够秉承中国建筑行业的传统。
-
Q:执行
sh
文件时出现/bin/bash^M: bad interpreter: No such file or directory
的报错该怎么处理?A:在
Linux
平台上执行sed -i "s/\r//" xxx.sh
,再重新运行。其中,xxx.sh
表示对应的文件。 -
Q:训练数据主要包括哪些?
A:
sikong
所涉及的训练数据主要包括《中国建筑设计防火规范》
、《建筑概论》
等标准文件。
本项目由司空学社的刘钧文、梁超、王屹卓、孙艺玮、董广龙、李英汉、贾一丁、王浩程、侯占民、何伊雯、武晋、马英等完成。
- 感谢王非先生、路明女士对本项目的资金支持。
- 本项目使用了LMFlow 与 Chinese-LLaMA-Alpaca 仓库,在此致谢!
本项目相关资源仅供学术研究之用,严禁用于商业用途。使用涉及第三方代码的部分时,请严格遵循相应的开源协议。模型生成的内容受模型计算、随机性和量化精度损失等因素影响,本项目无法对其准确性作出保证。本项目数据集绝大部分由模型生成,即使符合某些建筑学事实,也不能被用作实际建筑设计的依据。对于模型输出的任何内容,本项目不承担任何法律责任,亦不对因使用相关资源和输出结果而可能产生的任何损失承担责任。
如果你使用了本项目的数据或者代码,请声明引用