!!!我本地Windows10+,无显卡,4G可用内存,选取很小的模型练手!!!

       本文提供了两种在低配Windows10环境(4G内存/无显卡)本地运行Qwen2-0.5B小模型的方法。方式一通过HuggingFace生态实现:使用git克隆模型后,通过PyTorch+Transformers框架加载,特别注意了CPU运行设置和内存优化参数。方式二采用Ollama工具链,演示了从模型下载到API调用的完整流程,包含流式/非流式两种交互方式。测试案例显示模型能正确生成中文回复,验证了方案的可行性。两种方式均给出完整代码示例和异常处理方案,为资源受限环境下的AI实践提供了可复现的参考方案。

    方式一:git clone 模型运行

    本地部署流程

    • 克隆模型:git clone https://www.modelscope.cn/Qwen/Qwen2-0.5B.git
    • 模型存放路径找到 C:/Users/WTCL/IdeaProjects/Qwen2-0.5B
    • 安装运行模型的python框架
      • # pip install torch torchvision torchaudio
      • # pip install transformers>=4.37.0
      • # pip install accelerate
      • 编写代码加载模型,提问
    • import torch
      import os
      from pathlib import Path
      from transformers import AutoModelForCausalLM, AutoTokenizer
      
      # 方法:使用 pathlib 构造绝对路径(最可靠)
      model_path = Path("C:/Users/WTCL/IdeaProjects/Qwen2-0.5B").resolve()
      
      # 检查路径是否存在
      if not model_path.exists():
          raise FileNotFoundError(f"模型目录不存在: {model_path}")
      
      print("✅ 使用模型路径:", model_path)
      
      # 加载分词器和模型
      tokenizer = AutoTokenizer.from_pretrained(str(model_path))
      # 加载模型(新版本用 dtype,且需 accelerate)
      model = AutoModelForCausalLM.from_pretrained(
          model_path,
          dtype=torch.float16,      # ✅ 新参数名
          device_map="cpu"          # ✅ 需要 accelerate
      )
      
      # 设置 pad_token_id(避免警告)
      if tokenizer.pad_token is None:
          tokenizer.pad_token = tokenizer.eos_token
      model.config.pad_token_id = model.config.eos_token_id
      
      # 测试生成
      input_text = "你好!"
      inputs = tokenizer(input_text, return_tensors="pt")
      outputs = model.generate(**inputs, max_new_tokens=30)
      print("🤖 输出:", tokenizer.decode(outputs[0], skip_special_tokens=True))

    运行程序

            查看运行的效果:如果有打印输出内容代表模型正常

    C:\Java\gitee\authbase-master\authbase-master\venv\Scripts\python.exe C:\Java\gitee\authbase-master\authbase-master\testLocal.py 
    ✅ 使用模型路径: C:\Users\WTCL\IdeaProjects\Qwen2-0.5B
    Setting `pad_token_id` to `eos_token_id`:151643 for open-end generation.
    🤖 输出: 你好!我最近感觉很累,没有精神,想睡觉,但是又睡不着,有什么办法可以缓解吗?
    您好,根据您的症状,

    方式二 Ollama运行

    本地部署流程

    • 下载ollama的Windows版,傻瓜式安装即可
      • 安装完成就是这种的
    • 按住win+R打开命令窗口
      • # 安装qwen2:0.5b参数大模型:ollama pull qwen2:0.5b
      • # 卸载: ollama rm qwen2:0.5b
      • # 运行模型 : ollama run qwen2:0.5b
      • # 停止模型:ollama stop qwen2:0.5b
      • # 查看模型是否运行:ollama ps
    • 编写代码加载模型,提问
      • 安装Ollama的Python脚手架
      • # pip install ollama
      • 编写代表调用大模型 
    import ollama
    
    
    # 连接大模型提问
    def api_generate(text: str):
        print(f'提问:{text}')
        stream = ollama.chat(
            model='qwen2:0.5b',
            messages=[{"role": "user", "content": text},
                      {"role": "system", "content": "你必须返回JSON格式的回答,必须使用中文回复"}],
            stream=True,  # 是否流式输出
        )
        for i in stream:
            # 将对象转为str类型
            done = str(i.get("done"))
            if done == 'True':
                # 判断是否包含done=True
                print("\n-----------已经结束了--------\n", )
                break
            #使用延迟打印一个字一个字的
            print(i.get("message").get("content"), end="", flush=True)
        print('\n-----------------------------------------\n')
        for chunk in stream:
            if not chunk['done']:
                print(chunk['response'], end='', flush=True)
            else:
                print('\n')
                print('-----------------------------------------')
                print(f'总耗时:{chunk['total_duration']}')
                print('-----------------------------------------')
    
    
    # 第二步,启动ollama后,开始调用 Ollama 接口,以调用“qwen2.5:3b”为例
    # 启动大模型“qwen2.5:3b”:Win+R调出运行框,输入cmd,在cmd中输入”ollama run qwen2.5:3b“并启动
    if __name__ == '__main__':
        # 流式
        try:
            api_generate(text='周杰伦有哪些代表作,请给出具体代表作并说明理由?')
        except Exception as e:
            print(e)
            print(f"更新位置信息失败: {e}")
        # 非流式
        content = ollama.generate(model='qwen2:0.5b', prompt='周杰伦有哪些代表作,请给出具体代表作并说明理由?')
        print(content)
    

     运行程序

            查看运行的效果:如果有打印输出内容代表模型正常

    提问:周杰伦有哪些代表作,请给出具体代表作并说明理由?
    【答案】
    1. 《青花瓷》
    2. 《射雕英雄传》
    3. 《卧虎藏龙》
    
    周杰伦的代表作主要有两部电影和几首歌曲,分别是:《神雕侠侣》、《鹿鼎记》以及《义勇军之壮行队》。其中,《青花瓷》是他在2001年发行的第一张专辑中的一首歌,而后来的作品《射雕英雄传》、《卧虎藏龙》等都是他的代表作。
    
    另外,周杰伦也有自己的歌曲风格和主题,如《隐形的翅膀》、《恋歌》以及《青花瓷》《鹿鼎记》等。这些歌曲都有独特的音乐风格和情感内涵,为他在全球范围内赢得了巨大的影响力。
    
    以上是关于周杰伦的一些代表性作品及他们所代表的风格。
    -----------已经结束了--------
    
    
    -----------------------------------------
    
    model='qwen2:0.5b' created_at='2025-10-22T06:41:27.8151692Z' done=True done_reason='stop' total_duration=843971700 load_duration=157353100 prompt_eval_count=24 prompt_eval_duration=25258700 eval_count=21 eval_duration=617605200 response='《青花瓷》、《九品芝麻官》、《阿诗玛》等。' thinking=None context=[151644, 872, 198, 40542, 102028, 100794, 104719, 99661, 19403, 11, 14880, 107485, 100398, 99661, 19403, 62926, 66394, 102401, 11319, 151645, 198, 151644, 77091, 198, 26940, 99467, 99232, 100930, 25067, 5373, 26940, 99609, 24442, 110701, 99412, 25067, 5373, 26940, 99727, 100045, 101382, 25067, 49567, 1773]
    
    Process finished with exit code 0

    结束完结撒花

            恭喜你,你也完成了玩具车版的大模型本地运行

    参考资源

    • 相关工具链文档:Hugging Face、PyTorch官方指南
    • 社区支持:GitHub Issues、Discord技术群组链接
    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐