# 使用Cline进行模型训练
[Code Server](https://github.com/coder/code-server)是一个开源项目，它将Visual Studio Code完整运行在远程服务器上，并通过浏览器提供访问能力。主要支持以下能力：
- **完整VS Code体验：**支持扩展市场、调试器、终端、Git等几乎所有原生功能。
- **跨平台访问：**只需浏览器即可在任何设备上编写代码。
- **统一开发环境：**代码、配置和依赖项均部署在服务器上，确保环境一致性。
- **私有部署**：数据完全由用户掌控。
Cline是集成在Code Server中的AI编程助手。本文介绍如何在Notebook实例的Code Server中使用Cline进行模型训练。
#### 注意事项
- 在使用Cline助手前，请仔细阅读[Cline风险说明及安全建议](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_20_0003.html)。
- 企业用户使用Code Server时，需满足一定的网络要求，详情请参见[企业用户使用Code Server网络要求](https://support.huaweicloud.com/devtool-modelarts/devtool-modelarts_0024.html)。
 
#### 计费说明
- Cline本身不收费，但调用大模型API会产生费用。具体计费方式取决于您选择的API Provider。
- 在ModelArts运行Notebook实例时，会使用计算资源和存储资源，产生计算资源和存储资源的累计值计费。计费详情请参见[开发环境计费项](https://support.huaweicloud.com/price-modelarts/price-modelarts-0010.html)。
 
#### 前提条件
已[在Code Server中配置Cline](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_20_0004.html)。
 #### Nanochat项目开发
[Nanochat](https://github.com/karpathy/nanochat)是AI领域的Andrej Karpathy发布的一个开源项目，是一套极简、完整且低成本的训练框架，可以用不到100美元的成本，在几个小时内从零训练出一个属于自己的、能对话的迷你版ChatGPT。
本节以nanochat项目为例，介绍如何在Code Server中快速开发，包括文件上传、环境准备、项目运行等能力的演示。
**演示环境配置**
- 实例规格：8 vCPUs \| 32 GB (modelarts.vm.cpu.8u)
  
- 演示镜像：pytorch_2_1:pytorch_2.1.0-cuda_12.1-py_3.9.11-ubuntu_22.04-x86_64-20240313165241-219655b
  
 
#### 项目加载
您可以任选以下方式加载项目。
- 方式一：Git命令下载
  1. 打开Terminal。
     图1New Terminal   
     ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002682994539.png "点击放大") 
  
  2. 使用命令下载。
     ```
     git clone https://github.com/karpathy/nanochat.git
     cd nanochat
     ```
     
   
- 方式二：拖拽上传
  1. 进入工作目录，打开文件夹。
     图2Open Folder   
     ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002682995389.png "点击放大") 
  
  2. 将本地文件夹拖到Code Server工作目录下，自动上传文件夹下内容。
   
 
#### nanochat环境准备
1. 安装uv。 uv是一个用Rust编写的极速Python包和项目管理工具，旨在成为Python生态系统中一个统一、高效的工具链。nanochat项目中使用uv来管理Python环境，所以需先安装uv。
   ```
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```
   
2. 安装nanochat环境。 本教程基于CPU环境演示，所以执行如下命令安装nanochat。
   ```
   export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
   uv sync --extra cpu
   ```
   **注意**：如果无法访问HuggingFace服务，需将dataset.py代码中硬编码数据地址切换为国内源。
   
 
#### 在CPU环境执行模型训练
本文档主要为演示Code Server功能，非大模型的训练调试，所以将训练脚本中的迭代步数减少以缩短训练耗时。对模型的训练结果也未做调参处理，如果想获得更好的训练效果，可调整参数或在GPU环境运行本项目。
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414237.png "点击放大")
启动训练脚本。
```
# 启动运行脚本
bash runs/runcpu.sh
```
之后TERMINAL上即可显示大模型的主要训练流程日志，主要包括如下步骤：
1. 训练数据下载：数据集默认下载至 /home/ma-user/.cache/nanochat路径下。
2. Tokenizer训练。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254546.png)
   
3. 模型初始化。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414247.png)
   
4. 自监督训练过程：可以观察到Loss逐步降低，模型从随机开始，逐渐学会预测下一个Token。在第100步时，模型输出重复的无意义结果；第3000步，模型输出具备一定的逻辑。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254602.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294389.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254588.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254514.png "点击放大")
   
5. SFT过程：可以看到SFT过程出现Loss异常，说明CPU上训练SFT需要进行更专业的调参。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414442.png)
   
6. 模型对话。 执行以下脚本，可以获得模型的对话输出。
   ```
   python -m scripts.chat_cli -p "What is the capital of France?"
   ```
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414500.png "点击放大")
   
 
#### 使用Cline进行模型训练
[Cline](https://github.com/cline/cline)是一款基于大语言模型的Code Server插件，能够理解自然语言指令，自动完成代码生成、文件编辑、终端命令执行等复杂开发任务。您可以借助Cline作为AI编程助手，自动化完成各种项目的环境配置、依赖安装及使用，大幅提升开发效率。关于Cline的风险说明，请参见[Cline风险说明及安全建议](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_20_0003.html)。
#### 在Cline配置模型服务信息
- 免费模型 Cline提供免费的模型调用，选择Absolutely Free，之后选择一个免费的模型，登录Cline账号使用。
  ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254558.png)
  ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645254536.png)
  
- 第三方模型厂商 Cline支持多种模型接入方式，覆盖面非常广泛，包括Huawei Cloud MaaS、Claude Code、DeepSeek、OpenAI等。
  以Huawei Cloud MaaS为例：
  1. 在API Provider中搜索Huawei Cloud MaaS。
  
  2. API Key输入在华为云已创建的API Key。关于如何创建API Key，请参见[创建API Key](https://support.huaweicloud.com/model-call-maas/model-call-049.html#section2)。
  
  
  图3配置模型信息   
  ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414470.png)
  配置完成后，在对话框即可与大模型对话。
  图4与大模型对话   
  ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294451.png) 
 
#### 项目实践
本节以[Nanochat项目开发]为例，介绍如何使用AI助手Cline，提升开发效率。
1. 使用Plan模型设定计划。 在Cline对话框中输入问题，Cline会制定一个执行计划。
   图5输入问题   
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294437.png)
   图6制定计划   
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414205.png) 
2. 使用Act模式执行计划。单击"Act"切换为Act模式，Cline会帮助用户执行对应的计划。 Cline执行需要一定的操作权限，可以通过对话框上方![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294355.png)图标设置。
   图7Act模型   
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414307.png)
   图8设置操作权限   
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414408.png)
   Cline根据Plan指定的计划，自动执行如下流程：
   1. 下载项目。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294345.png)
      
   
   2. nanochat环境初始化。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414418.png)
      
   
   3. 运行nanochat。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294379.png)
      
   
   4. 打开日志文件，可以看到脚本在正常运行。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414275.png "点击放大")
      
   
   5. 修改训练步数后重新训练。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002654138740.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414225.png)
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414295.png "点击放大")
      可以看到Cline停止了刚才的训练脚本，自动修改了步数后再次触发训练脚本。
      
   
   6. 问题定位。
      1. 脚本运行一段时间后异常停止，使用Cline进行问题定位，识别到为OOM错误，使用Cline解决后重新运行。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294419.png)
         
      
      2. 让Cline修改脚本，减小模型大小，再次训练。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675294367.png)
         ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002645414400.png "点击放大")
         
      
      3. Cline自动修改模型大小后，成功运行项目。 ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002675414259.png "点击放大")
         
       
    
 
#### 常见问题
[在Code Server中打开.ipynb文件，首次执行代码单元格有明显延迟，怎么办？](https://support.huaweicloud.com/modelarts_faq/modelarts_notebook_4308.html)
