{"id":25830529,"url":"https://github.com/sawtone/search_helper","last_synced_at":"2026-04-09T18:09:05.046Z","repository":{"id":224033172,"uuid":"762221737","full_name":"Sawtone/search_helper","owner":"Sawtone","description":"一个Node.js后端，React.js前端，Python-Flask调用InternLM2-Chat-7B的项目，内容待上传","archived":false,"fork":false,"pushed_at":"2024-04-14T06:40:59.000Z","size":2481,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-15T00:49:56.310Z","etag":null,"topics":["flask","internlm","internlm-chat-7b","nodejs","reactjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sawtone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-23T10:28:02.000Z","updated_at":"2024-04-15T00:49:58.440Z","dependencies_parsed_at":"2024-04-15T01:00:32.972Z","dependency_job_id":null,"html_url":"https://github.com/Sawtone/search_helper","commit_stats":null,"previous_names":["scoodtone/screening_helper","sawtone/screening_helper","sawtone/search_helper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sawtone%2Fsearch_helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sawtone%2Fsearch_helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sawtone%2Fsearch_helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sawtone%2Fsearch_helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sawtone","download_url":"https://codeload.github.com/Sawtone/search_helper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241212110,"owners_count":19927891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","internlm","internlm-chat-7b","nodejs","reactjs"],"created_at":"2025-02-28T19:30:07.086Z","updated_at":"2025-12-31T01:11:30.050Z","avatar_url":"https://github.com/Sawtone.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Windows+LAPTOP 本地搭建 InternLM2-Chat-7B(4bit量化)\n\n[InternLM's GitHub](https://github.com/InternLM)：https://github.com/InternLM\n\n[InternLM2 项目地址](https://github.com/InternLM/InternLM)：https://github.com/InternLM/InternLM\n\n[InternLM's HuggingFace](https://huggingface.co/internlm)：https://huggingface.co/internlm\n\nInternLM 多项指标表现优秀，觉得不错欢迎Star~\n\n\n### 环境介绍\n\nGPU：LAPTOP RTX 3060  (6GB GDDR6 + 7.9GB 共享GPU)\n\nSystem：Windows 11\n\nCUDA：11.7.64\n\n显卡驱动：551.23 (后面使用共享GPU时会用到)\n\nPython：3.10.13\n\n- pytorch： 2.0.1\n- transformers：4.37.2\n- streamlit：1.30.0\n\n- bitsandbytes： 0.41.1\n\n- triton： 2.0.0\n\n这里需要注意InternLM官方给出的要求：\n\nPython \u003e= 3.8\n\n- PyTorch \u003e= 1.12.0 (推荐 2.0.0 和更高版本)\n- Transformers \u003e= 4.34\n\n### 前言\n\nInternLM 功能强大、搭建简单、生态丰富，类似搭建教程已有许多，部分列举如下：\n\n[CSDN-InternLM-7B模型的简介、安装、使用方法](https://blog.csdn.net/qq_41185868/article/details/131692975#1、通过以下的代码加载 InternLM 7B Chat 模型)\n\n[官方教程-GitHub-InternLM/README_zh-CN.md](https://github.com/InternLM/InternLM/blob/main/README_zh-CN.md)\n\n本文主要介绍：\n\n- 如何在LAPTOP3060等小显存机上量化运行7B-LLM\n- 如何跳过量化所需库bitsandbytes与triton只能在Liunx上运行的限制\n\n本人小白，教程可能难免太注重不重要的细节或者存在结构混乱，望各位海涵🙈\n\n### 搭建流程\n\n#### 下载InternLM\n\n1. ##### 创建项目目录如下(命名仅供参考)\n\n   ```\n   InternLM_Try\n       ├── InternLM_GitHub\n       │   └── ...\n       └── InternLM2-Chat-7B\n       │   └── ...\n   ```\n\n2. ##### 访问 [InternLM2 HuggingFace 项目地址](https://huggingface.co/internlm/internlm2-7b/tree/main)\n\n   下载项目文件至目录 `InternLM_Try/InternLM2-Chat-7B`\n\n3. ##### 创建环境，执行命令安装如下依赖库\n\n   这里假设虚拟环境名为 InternLM-env\n\n   ```\n   pip install modelscope\n   pip install transformers\n   pip install streamlit\n   pip install sentencepiece\n   pip install accelerate\n   ```\n\n4. ##### 访问[InternLM2 GitHub 项目地址](https://github.com/InternLM/InternLM)\n\n   下载项目文件至目录 `InternLM_Try/InternLM_GitHub`\n\n\n\n此时，通过修改`InternLM_Try/InternLM_GitHub/chat`内 `web_demo.py`内模型的存放地址\n\n```\n@st.cache_resource\ndef load_model():\n    model = (AutoModelForCausalLM.from_pretrained('internlm/internlm2-chat-7b',\n                                                  trust_remote_code=True).to(\n                                                      torch.bfloat16).cuda())\n    tokenizer = AutoTokenizer.from_pretrained('internlm/internlm2-chat-7b',\n                                              trust_remote_code=True)\n    return model, tokenizer\n```\n\n调用命令：\n\n```\ncd `InternLM_Try/InternLM_GitHub/chat`\nactivate InternLM-env\nstreamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006\n```\n\n打开 https://127.0.0.1:6006 就可以进行本地网页端对话啦\n\n------\n\n欸？报错了？看来是显存不够了，让我们来进行4-bit量化吧！\n\n#### 4-bit量化\n\n------\n\n首先，以下为官方GitHub指导：\n\n```\ntokenizer = AutoTokenizer.from_pretrained(\"internlm/internlm2-chat-7b\", trust_remote_code=True)\n# 设置`torch_dtype=torch.float16`来将模型精度指定为torch.float16，否则可能会因为您的硬件原因造成显存不足的问题。\nmodel = AutoModelForCausalLM.from_pretrained(\"internlm/internlm2-chat-7b\", device_map=\"auto\",trust_remote_code=True, torch_dtype=torch.float16)\n# (可选) 如果在低资源设备上，可以通过bitsandbytes加载4-bit或8-bit量化的模型，进一步节省GPU显存.\n  # 4-bit 量化的 InternLM 7B 大约会消耗 8GB 显存.\n  # pip install -U bitsandbytes\n  # 8-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map=\"auto\", trust_remote_code=True, load_in_8bit=True)\n  # 4-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map=\"auto\", trust_remote_code=True, load_in_4bit=True)\n```\n\n不难看出我们需要重点执行`pip install -U bitsandbytes`，并在函数加载时指定`load_in_4bit=True`\n\n如果你是Linux系统，直接运行就成功啦\n\n但......如果你是Windows系统，并且完全没有Liunx虚拟机，也不想使用任何云算力平台呢\n\n#### Windows 系统下量化大模型\n\n------\n\n你可能会想：Windows系统怎么使用Linux的Python库呢\n\n但翻阅无数个网页后，我可以 很 负责任地说，还是有办法滴\n\n⭐注：\n\n- 这段内容可能会出现一些不在主要脉络里但我放上来的链接，这是因为我在一步步做的过程中也比较乱，在很多教程的帮助下尝试了很多种办法，此文也是经过了半个月才写，所以有一些链接我不太确定有什么用，但既然不是完全没用，我就还是把它放进来了\n\n- 必须确保Python版本为3.10.x，后面下载会用到\n\n- 必须确保pytorch支持CUDA (安装新torch的时候经常忘记用\u003c版本号\u003e+cu117等GPU版本)\n\n  and如何安装适配自己机型的CUDA\n\n  这个如果是小白还是得看几个教程的，具体可以自己百度，很多\n\n- 期间一些依赖库的下载就省略了，可以自己pip (我淡忘了)\n\n  \n\n###### 下载bitsandbytes windows 预编译包\n\n------\n\n⭐根据[使用 12GB 显存体验百川 13B 大型语言模型 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/643307410)\n\n跳转到里面提及的windows预编译包[Release Wheels · jllllll/bitsandbytes-windows-webui (github.com)](https://github.com/jllllll/bitsandbytes-windows-webui/releases/tag/wheels)\n\n在列表中选择0.41.1，跳转进入[jllllll/bitsandbytes at cmake_windows_0.41.1 (github.com)](https://github.com/jllllll/bitsandbytes/tree/cmake_windows_0.41.1)\n\n根据要求下载，最终在你环境的site-packages里即可\n\n\n\n###### 确保 bitsandbytes 不报错\n\n------\n\n⭐首先，官方issues，里面很多有用的建议，但都是英文，地址如下：\n\n[Issues · TimDettmers/bitsandbytes (github.com)](https://github.com/TimDettmers/bitsandbytes/issues)\n\n\n\n⭐我认为比较有用的几个issue 和 comment：\n\n[Issue-CUDA Setup failed despite GPU being available. Inspect the CUDA SETUP outputs above to fix your environment! · Issue #175 · TimDettmers/bitsandbytes (github.com)](https://github.com/TimDettmers/bitsandbytes/issues/175)\n\n[https://github.com/TimDettmers/bitsandbytes/issues/175#issuecomment-1701085721](https://github.com/oobabooga/text-generation-webui/issues/147#issuecomment-1456040134)\n\n[https://github.com/oobabooga/text-generation-webui/issues/147#issuecomment-1456040134](https://github.com/oobabooga/text-generation-webui/issues/147#issuecomment-1456040134)\n\nhttps://github.com/TimDettmers/bitsandbytes/issues/942#issuecomment-1872393853\n\n\n\n⭐根据[win11下bitsandbytes的用法 – yinfupai](https://blog.yinfupai.com/en/4587.html)\n\n修改`site-packages\\bitsandbytes\\cuda_setup\\main.py`中如下函数返回值为.dll，修改后如下\n\n```\ndef evaluate_cuda_setup():\n    cuda_setup = CUDASetup.get_instance()\n    if 'BITSANDBYTES_NOWELCOME' not in os.environ or str(os.environ['BITSANDBYTES_NOWELCOME']) == '0':\n        cuda_setup.add_log_entry('')\n        cuda_setup.add_log_entry('='*35 + 'BUG REPORT' + '='*35)\n        cuda_setup.add_log_entry(('Welcome to bitsandbytes. For bug reports, please run\\n\\npython -m bitsandbytes\\n\\n'),\n              ('and submit this information together with your error trace to: https://github.com/jllllll/bitsandbytes/issues'))\n        cuda_setup.add_log_entry('='*80)\n    if not torch.cuda.is_available(): return 'libbitsandbytes_cpu.dll', None, None, None\n```\n\n\n\n⭐根据[成功解决UnicodeDecodeError: 'utf-8' codec can't decode - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/150371648)\n\n报错`UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 238: invalid continuation b`可以通过直接修改文档内的`utf-8`为`ISO-8859-1\n\n\n\n⭐需要为 bitsandbytes 下载 libbitsandbytes_cuda117.dll，可以参考以下链接：\n\n[bitsandbytes-cuda117 · PyPI](https://pypi.org/project/bitsandbytes-cuda117/#files)\n\n[TimDettmers/bitsandbytes: Accessible large language models via k-bit quantization for PyTorch. (github.com)](https://github.com/TimDettmers/bitsandbytes)\n\n注：此文件需要被放到`site-packages\\bitsandbytes`内\n\n\n\n⭐根据[CSDN-大模型GPU安装bitsandbytes报错解决](https://blog.csdn.net/qq_36936730/article/details/132306503?spm=1001.2101.3001.6650.2\u0026utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2-132306503-blog-129930919.235^v43^pc_blog_bottom_relevance_base4\u0026depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2-132306503-blog-129930919.235^v43^pc_blog_bottom_relevance_base4\u0026utm_relevant_index=5) 与 [CSDN-大模型训练时，使用bitsandbytes报错的解决方法](https://blog.csdn.net/anycall201/article/details/129930919)\n\n需要在下载bitsandbytes前手动在环境变量LD_LIBRARY_PATH中添加CUDA的lib路径\n\n注：可能还需要添加其他环境变量，但理论上这一个就够了，具体可以自己看源文件`site-packages\\bitsandbytes\\cuda_setup\\main.py`\n\n\n\n在可视化界面设置有时会出错，一个不小心还容易误删系统Path变量(别问我怎么知道的)\n\n**WARNING：千万别不小心把系统环境变量删了，如果删了的话千万别关机，关机之后就只能还原了，真的遇到的话可以问我，我被迫还原了一次...**\n\n⭐所以根据[CSDN-使用set命令设置环境变量](https://blog.csdn.net/dlyhlq/article/details/2851509)  [CSDN-windows环境变量 set使用](https://blog.csdn.net/lidengzhi0000/article/details/6108876?spm=1001.2101.3001.6650.1\u0026utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-1-6108876-blog-2851509.235^v43^pc_blog_bottom_relevance_base4\u0026depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-1-6108876-blog-2851509.235^v43^pc_blog_bottom_relevance_base4\u0026utm_relevant_index=2) 与 [如何使用 Windows CMD 环境变量 - 知乎](https://zhuanlan.zhihu.com/p/499305351)\n\n可以使用 `set` 在 cmd 内临时设置环境变量\n\n\n\n⭐我依稀记得自己改完环境变量还报错，然后好像把如下部分（不确定，可能是其他部分）的报错删了，只要不exit就好代码哈哈哈哈\n\n可以借鉴一下，环境变量设置好之后如果还报错的话不让他退出，不报错是可以跑的\n\n```\n    remaining_candidate_env_vars = {\n        env_var: value for env_var, value in candidate_env_vars.items()\n        if env_var not in {\"CONDA_PREFIX\", \"CUDA_HOME\", \"CUDA_PATH\", \"LD_LIBRARY_PATH\", \"PATH\"}\n    }\n```\n\n\n\n⭐根据[Llama2-Chinese项目：1-项目介绍和模型推理 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/655645086?utm_id=0)\n\n拷贝 CUDA 的 bin 内的文件至`site-packages\\bitsandbytes`     (这也太暴力了)\n\n\n\n⭐根据[ModuleNotFoundError: No module named 'charset_normalizer' - CSDN文库](https://wenku.csdn.net/answer/8bf03ee4fdfc42aa9089c5ade10dcccf)\n\n无论报任何 no module 直接 pip 就行，除非linux专属(\n\n\n\n⭐还有一些报错比如找不到“transformers” 我通过重启VSC即可解决\n\n遇到无法解决的问题欢迎评论或者私信我\n\n我在官方项目下的issue：[[QA\\] Windows11使用bitsandbytes运行InternLM2-chat-7B-4bits量化，大模型精神错乱 · Issue #680 · InternLM/InternLM (github.com)](https://github.com/InternLM/InternLM/issues/680)\n\n\n\n###### 下载triton\n\n如果报错No Module 'triton'，证明你离胜利不远了\n\ntriton是bitsandbytes运行中不可或缺的一个库，但此库也是仅Linux\n\n\n\n⭐根据[CSDN-分析解决【No module named ‘triton‘】的问题_error caught was: no module named 'triton](https://blog.csdn.net/ddrfan/article/details/130127401) 与[CSDN-Windows上安装Triton_triton-2.0.0-cp310-cp310-win_amd64.whl](https://blog.csdn.net/u014288878/article/details/134725508?spm=1001.2101.3001.6650.2\u0026utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2-134725508-blog-130127401.235^v43^pc_blog_bottom_relevance_base4\u0026depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2-134725508-blog-130127401.235^v43^pc_blog_bottom_relevance_base4)\n\n我们可以下载triton的.whl文件[triton-2.0.0-cp310-cp310-win_amd64.whl · r4ziel/xformers_prebuilt at main](https://huggingface.co/r4ziel/xformers_pre_built/blob/main/triton-2.0.0-cp310-cp310-win_amd64.whl)\n\n也正因为只有cp310的版本，所以我们需要确保python环境为3.10.x\n\n\n\n#### 使用共享GPU\n\n好的，到这里我们已经完成了量化与搭建的所有操作(撒花.gif)\n\n但 LAPTOP3060 只有 6GB 显存，4-bit 量化的 7B LLM 需要至少 8GB 显存\n\n打开资源管理器，我发现有 7.9G 的共享GPU不能进入使用状态\n\n那为什么不将它利用起来呢\n\n于是，根据(主要是后一个)[深度学习GPU专用内存跑满，是否能利用共享GPU加快速度？ - 知乎 (zhihu.com)](https://www.zhihu.com/question/455084239) 与 \n\n[PyTorch现在能不能使用共享GPU内存？ - 知乎 (zhihu.com)](https://www.zhihu.com/question/616766660/answer/3252280836?utm_psn=1698077346941427712)\n\n我们可以通过更新Nvidia 显卡驱动至536.40+并创建张量的方式使用这一块内存\n\n更新显卡驱动只需要打开 GeForce Experience 这个软件直接下载就行\n\n创建张量：\n\n```\nactivate InternLM-env\npython\nimport torch\na = torch.zeros((1000, 1000, 1000, 2), dtype = torch.int32, device = \"cuda\")\n```\n\n之后就可以发现共享GPU进入可用状态了\n\n注：\n\n- 共享GPU属于CPU加速GPU，会占用CPU，且速度相当于不用CUDA，但因为大部分还是GPU，还是很快的\n\n- 更新显卡驱动会导致电脑配置变怪 打游戏不习惯等问题，请谨慎处理 (我用了几天就习惯了)\n- 张量创建后项目能够运行便可，只需要创建一次，再打开项目就不用创建了\n- 在你第一次创建并退出项目后，记得使用 `del a` 释放张量，使用 `torch.cuda.empty_cache()` 清理GPU缓存，使用 `import gc` 和`gc.collect()`用垃圾回收机制清除占用 (我不确定用几个，就多用了几个)\n\n\n\n⭐其他可以参考的链接：\n\n[Windows 下 bitsandbytes load_in_8bit报错 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/679416233)\n\n[jupyter 下 bitandbytes报错记录 - glowwormss - 博客园 (cnblogs.com)](https://www.cnblogs.com/jax-/p/17812736.html)\n\n[【半精度】Pytorch模型加速和减少显存_model.half()-CSDN博客](https://blog.csdn.net/leviopku/article/details/112472123)\n\n[GitHub - DeXtmL/bitsandbytes-win-prebuilt](https://github.com/DeXtmL/bitsandbytes-win-prebuilt)\n\n\n\n⭐一个名为bitsandbytes-windows的库，我记得好像用过，但没成功，不推荐使用：\n\n[Keith-Hon/bitsandbytes-windows: 8-bit CUDA functions for PyTorch in Windows 10 (github.com)](https://github.com/Keith-Hon/bitsandbytes-windows)\n\n## 感想\n\n首先承认我的行为属于多此一举\n\n正确做法是使用虚拟机创建 Linux 环境或者直接使用云算力平台 (InternLM有自己的云算力平台，大大很好说话)\n\n但为了在本机搭建，我一股犟劲完成了如上操作\n\n中途在添加环境变量时不小心误删了 PATH 并且因为怀疑需要重启生效所以关机了\n\n导致不得不将电脑还原为2天前  (只能还原到安装软件的时间节点) (还好2天前因为其他项目安装了MySQL 8.x版本)\n\n心灰意冷下进入梦乡，却在第二天上午奇迹般成功\n\n\n\n感谢互联网时代如此多的信息与教程对我的帮助\n\n也感谢 InternLM 社区大佬与各位同学们对我一直以来的帮助\n\n希望 InternLM 越做越好！希望此博客对你有帮助！\n\n\n\n想到当晚翻阅 GitHub Issues 时看到的一个评论`thanks man, you saved my day!`，感触很深\n\nThey had saved my day!\n\nI wish that one day i can save your day!☺️\n\n## 预告\n\n本人本地搭建 InternLM 初衷是实现一个全栈项目\n\n先放一个占坑地址，此文即为README.md [Scoodtone/screening_helper (github.com)](https://github.com/Scoodtone/screening_helper)\n\n主要由 Node.js后端 React.js前端 与 Python-Flask 构成\n\n前端接受输入后传入后端，后端通过POST传入Flask，大模型回复后原路返回显示在前端网站上\n\n该开源项目的文件将在之后与大家见面，有需要的佬可以浅浅期待一下\n\n(基本没写什么根本不会被需要哈哈哈)\n\n## 附录\n\n### 可能用到的命令\n\n`pip list` 列出该环境的依赖库与版本\n\n`nvcc --version` 看CUDA的版本\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsawtone%2Fsearch_helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsawtone%2Fsearch_helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsawtone%2Fsearch_helper/lists"}