进入cloud.tencent.com/act/pro/fre… 界面选择自己想要操作的云产品,进行免费试用,选择一种镜像,后续进行手机扫码验证后,就可以在腾讯云的控制台中看到自己的试用服务器
后续步骤就不一步一步讲了,直接在本地连接服务器
为了避免依赖冲突,建议在Python虚拟环境中进行安装和运行:
python3 -m venv deepseek-env
source deepseek-env/bin/activate
上传文件
mv /root/Python-3.10.13.tgz ~/deepseek-env/bin/
mv /root/openssl-1.1.1.tar.gz ~/deepseek-env/bin/
cd deepseek-env/bin
tar xzf openssl-1.1.1.tar.gz
tar xzf Python-3.10.13.tgz
安装新版 GCC
sudo yum install centos-release-scl
# 查看可用的工具集版本
sudo yum list devtoolset-*
执行后如果有下面异常: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 则执行
#将文件内的 `mirrorlist` 和 `baseurl` 替换为阿里云镜像:
sudo vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos-sclo-scl]
name=CentOS-7 - SCLo scl
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
#将文件内的 `mirrorlist` 和 `baseurl` 替换为阿里云镜像:
sudo vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
#再次执行
sudo yum list devtoolset-*
# 安装 GCC 11(推荐)
sudo yum install devtoolset-11-gcc devtoolset-11-gcc-c++
# 永久启用(添加到 ~/.bashrc)
echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc
source ~/.bashrc
gcc --version
安装新版 openssl
cd openssl-1.1.1
./config --prefix=/usr/local/openssl shared zlib
make
make install
如果上述步骤在 config 步骤报错:Can't locate IPC/Cmd.pm in @INC ,则需要安装下面的依赖包:
sudo yum groupinstall 'Development Tools' sudo yum install perl-core zlib-devel
还是Cmd有问题的话执行
yum -y install perl-I*
把openssl的库文件全部拷贝到 /usr/lib/路径中去:
cp -r /usr/local/openssl/lib/* /usr/lib
#更新动态链接库
ldconfig
#下面进行新旧版本替换:
# 备份旧版openssl
mv /usr/bin/openssl /usr/bin/openssl.bak-$(date +%m%d)
# 新版openssl软链接到旧openssl位置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# /etc/ld.so.conf 文件记录了编译时使用的动态链接库的路径,告诉链接器去哪个路径下寻找链接时需要用到的库,如果找不到,就会提示链接错误。
echo "/usr/local/openssl/lib">>/etc/ld.so.conf
# ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库。
ldconfig
安装一些必要插件
sudo yum install -y \
gcc openssl-devel bzip2-devel libffi-devel \
zlib-devel readline-devel sqlite-devel \
ncurses-devel xz-devel tk-devel
安装新版 Python
cd Python-3.10.13
./configure \
--enable-optimizations \
--enable-shared \
--with-openssl=/usr/local/openssl \
LDFLAGS="-Wl,-rpath,/usr/local/openssl/lib"
make -j$(nproc)
sudo make install
#查看python3.10引用的openssl版本
python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果出现python3.10: error while loading shared libraries: libpython3.10.so.1.0: cannot open shared object file: No such file or directory异常
find /usr -name "libpython3.10.so.1.0"
#如果查出来的地址为/usr/local/lib/libpython3.10.so.1.0
echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc
查看当前pip指向python版本
pip3.10 --version
#查看是否安装gradio,没有安装则安装
pip3.10 show gradio
#`gradio`是一个用于创建机器学习模型的Web界面的库
pip3.10 install gradio==4.28.2
pip3.10 install transformers datasets accelerate
python -c "import gradio; print(gradio.__version__)"
# 预期输出:4.28.2
开始安装huggingface-hub
pip3.10 install huggingface-hub==0.23.2 transformers==4.38.2
# 通过 huggingface-mirror.com 镜像站下载
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
--repo-type model \
deepseek-ai/deepseek-llm-7b-base \
--local-dir ./deepseek-7b \
--local-dir-use-symlinks False
如果你不使用 Hugging Face 模型
-
需自行实现:
- 分词器(Tokenizer)
- 模型架构(如Transformer)
- 训练循环(反向传播/优化器)
-
典型问题:
- 训练时间大幅增加(需从头训练)
- 效果下降(缺乏预训练知识)
- 代码复杂度激增
直接从huggingface官网下载模型,会有网络翻墙,配置host等各种问题,直接从huggingface的镜像网站下载 hf-mirror.com/
页面发布:基于Gradio的交互式训练界面
创建文件train_ui.py
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset
import torch
def start_training(data_dir, model_path, epochs, learning_rate):
# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 加载数据集
dataset = load_dataset("json", data_files={"train": f"{data_dir}/train.jsonl", "val": f"{data_dir}/val.jsonl"})
# 定义训练参数
training_args = TrainingArguments(
output_dir="./results",
per_device_train_batch_size=4,
num_train_epochs=int(epochs),
learning_rate=float(learning_rate),
logging_steps=100,
save_steps=500,
fp16=True,
report_to="none"
)
# 启动训练
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["val"]
)
trainer.train()
return "训练完成!模型已保存至 ./results 目录"
# 构建Gradio界面
with gr.Blocks(title="DeepSeek训练控制台") as demo:
gr.Markdown("## 🚀 DeepSeek本地训练平台")
with gr.Row():
data_input = gr.Textbox(label="数据集路径", placeholder="./data", value="./data")
model_input = gr.Textbox(label="模型路径", placeholder="./deepseek-7b", value="./deepseek-7b")
with gr.Row():
epoch_slider = gr.Slider(1, 10, value=3, label="训练轮次")
lr_input = gr.Number(label="学习率", value=3e-5)
train_btn = gr.Button("开始训练", variant="primary")
output_log = gr.Textbox(label="训练日志", interactive=False)
train_btn.click(
fn=start_training,
inputs=[data_input, model_input, epoch_slider, lr_input],
outputs=output_log
)
# 启动服务(允许外部访问)
demo.launch(server_name="0.0.0.0", server_port=7860, share=False)
运行与访问
# 启动服务(后台运行)
nohup python3.10 train_ui.py > log.txt 2>&1 &
# 访问地址
# 本地访问:http://localhost:7860
# 局域网访问:http://<服务器IP>:7860
# 查看端口监听状态
sudo ss -tulnp | grep ':786'
如果服务部署成功,但局域网访问失败,在腾越云配置防火墙