DeepSeek 云端部署,释放无限 AI 潜力!
1.简介
目前,OpenAI、Anthropic、Google 等公司的大型语言模型(LLM)已广泛应用于商业和私人领域。自 ChatGPT 推出以来,与 AI 的对话变得司空见惯,对我而言没有 LLM 几乎无法工作。
国产模型「DeepSeek-R1」的性能与 OpenAI 的 o1 相当,并以 MIT 许可证形式开源发布。
本文会手把手带你将 DeepSeek-R1 模型部署到云端(AWS EC2),释放AI潜力。
2.本地 LLM
我通常通过 Web 浏览器、应用程序或 API 使用 ChatGPT 和 Claude 等服务。这些服务非常方便,但在安全性和使用成本方面存在一些担忧。
相比之下,可以自行准备机器,在其上构建和运行 LLM。通过这种方式,可以在本地管理数据,无需担心令牌数量。虽然需要高规格的机器和初始环境设置,但一旦环境配置完毕,就可以以低成本使用高自由度的 AI。
3.环境
- MacBook Pro (14 英寸, M3, 2023)
- 操作系统:MacOS 14.5
- aws-cli:2.15.56
4.设置
首先,为了构建本地 LLM,启动 EC2 实例,并使用 Ollama 运行适当的模型。(Ollama 是一款可以在本地机器上运行公开模型的工具)
5.创建服务器并设置 Ollama
可以通过 AWS 控制台或 CLI 启动用于运行 LLM 的 EC2。根据 Claude 的建议,推荐的实例类型如下:
- 不需要 GPU 的情况:t3.xlarge(4 vCPU,16GB RAM)
- 需要 GPU 的情况:g4dn.xlarge(4 vCPU,16GB RAM,NVIDIA T4 GPU)
由于需要 GPU,因此选择了 g4dn.xlarge,并使用 Amazon Linux 2023。此外,添加了作为持久存储的 EBS 卷(/dev/xvdf)。
% aws ec2 run-instances \--region us-east-1 \--image-id ami-0df8c184d5f6ae949 \--instance-type g4dn.xlarge \--key-name <your key name> \--security-group-ids <安全组> \--subnet-id <subnet ID> \--block-device-mappings '[{"DeviceName": "/dev/xvda","Ebs": {"VolumeSize": 20,"VolumeType": "gp3","DeleteOnTermination": true}},{"DeviceName": "/dev/xvdf","Ebs": {"VolumeSize": 125,"VolumeType": "gp3","DeleteOnTermination": false}}]' \--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=ollama-gpu}]' \--count 1 \--associate-public-ip-address
由于需要在本地下载各种软件和模型,因此设置了附加卷(/dev/xvdf)
6.实例的详细信息
当实例启动后,环境已准备就绪。
% aws ec2 describe-instances \--region us-east-1 \--filters "Name=tag:Name,Values=ollama-gpu" \--query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress,InstanceType]' \--output table
-------------------------------------------------------------------
| DescribeInstances |
+----------------------+----------+---------------+---------------+
| i-xxxxxxxxxxxxxxxxx | running | xx.xx.xx.xx | g4dn.xlarge |
+----------------------+----------+---------------+---------------+# 卷确认
# 将 <INSTANCE_ID> 替换为上面命令获取的 ID
aws ec2 describe-volumes \--region us-east-1 \--filters "Name=attachment.instance-id,Values=<INSTANCE_ID>" \--query 'Volumes[*].[VolumeId,Size,State,Attachments[0].Device,Attachments[0].DeleteOnTermination]' \--output table------------------------------------------------------------------
| DescribeVolumes |
+------------------------+------+---------+------------+---------+
| vol-xxxxxxxxxxxxxxxxx | 125 | in-use | /dev/xvdf | False |
| vol-xxxxxxxxxxxxxxxxx | 20 | in-use | /dev/xvda | True |
+------------------------+------+---------+------------+---------+
如果实例已启动,则通过 SSH 登录并进行操作。
为了能够使用添加的卷,请执行以下命令。
% sudo mkfs -t xfs /dev/nvme1n1
% sudo mkdir -p /mnt/data
% sudo mount /dev/nvme1n1 /mnt/data
% echo '/dev/nvme1n1 /mnt/data xfs defaults 0 0' | sudo tee -a /etc/fstab
% sudo chown -R ec2-user:ec2-user /mnt/data# 確認
% df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.1G 464K 3.1G 1% /run
/dev/nvme0n1p1 20G 1.7G 19G 9% /
tmpfs 7.8G 0 7.8G 0% /tmp
/dev/nvme0n1p128 10M 1.3M 8.7M 13% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/nvme1n1 125G 926M 125G 1% /mnt/data
将额外卷格式化为 XFS 并挂载到 /mnt/data,然后更改权限。接下来安装 NVIDIA 驱动程序和 CUDA。如果在过程中缺少模块,则适当添加并继续执行。
# 系统更新
% sudo yum update -y# 创建应用程序目录
% mkdir -p /mnt/data/apps
% mkdir -p /mnt/data/apps/cuda
% mkdir -p /mnt/data/apps/ollama
% mkdir -p /mnt/data/cache
% mkdir -p /mnt/data/tmp# 设置所有权
% sudo chown -R ec2-user:ec2-user /mnt/data/apps
% sudo chown -R ec2-user:ec2-user /mnt/data/cache
% sudo chown -R ec2-user:ec2-user /mnt/data/tmp# 配置环境变量
% echo 'export CUDA_HOME=/mnt/data/apps/cuda' >> ~/.bashrc
% echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
% echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
% echo 'export OLLAMA_MODELS=/mnt/data/apps/ollama/models' >> ~/.bashrc
% echo 'export TMPDIR=/mnt/data/tmp' >> ~/.bashrc# 应用设置
% source ~/.bashrc# 修改 DNF 配置
% sudo tee /etc/dnf/dnf.conf <<EOF
[main]
gpgcheck=1
installonly_limit=2
clean_requirements_on_remove=True
best=True
skip_if_unavailable=True
keepcache=1
cachedir=/mnt/data/cache/dnf
EOF# 创建缓存目录
% sudo mkdir -p /mnt/data/cache/dnf
% sudo chown -R ec2-user:ec2-user /mnt/data/cache/dnf# 安装 NVIDIA 驱动程序和 CUDA
% cd /mnt/data/apps/cuda# 配置 CUDA 软件仓库
% sudo dnf config-manager --add-repo=https://developer.download.nvidia.com/compute/cuda/repos/amzn2023/x86_64/cuda-amzn2023.repo# 安装必要的系统软件包
% sudo dnf install -y dkms kernel-devel kernel-modules-extra
% sudo systemctl enable --now dkms# 安装 NVIDIA 驱动程序和 CUDA 相关工具
% sudo dnf install -y nvidia-driver nvidia-driver-cuda
% sudo dnf install -y vulkan-devel libglvnd-devel elfutils-libelf-devel xorg-x11-server-Xorg# 切换到 CUDA 安装目录
% cd /mnt/data/apps/cuda# 下载 CUDA 安装程序
% wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda_12.6.3_560.35.05_linux.run# 赋予执行权限
% chmod +x cuda_12.6.3_560.35.05_linux.run# 安装 CUDA(指定自定义安装路径)
% sudo ./cuda_12.6.3_560.35.05_linux.run \--toolkit --toolkitpath=/mnt/data/apps/cuda \--samples --samplespath=/mnt/data/apps/cuda/samples \--silent# 使环境变量生效
% source ~/.bashrc# 验证安装
% nvidia-smi
...% nvcc --versionnvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Oct_29_23:50:19_PDT_2024
Cuda compilation tools, release 12.6, V12.6.85
Build cuda_12.6.r12.6/compiler.35059454_0
如果 GPU 的驱动程序和 CUDA 安装成功,接下来就是安装 Ollama。只需使用 curl 执行脚本即可。
# 安装 Ollama
% curl -fsSL https://ollama.com/install.sh | sh# 创建 Ollama 的数据目录
% mkdir -p /mnt/data/apps/ollama# 配置 Ollama 服务
% sudo tee /etc/systemd/system/ollama.service <<EOF
[Unit]
Description=Ollama Service
After=network-online.target[Service]
Environment=OLLAMA_MODELS=/mnt/data/apps/ollama/models
Environment=NVIDIA_VISIBLE_DEVICES=all
Environment=CUDA_VISIBLE_DEVICES=0
ExecStart=/usr/local/bin/ollama serve
Restart=always
User=ec2-user[Install]
WantedBy=multi-user.target
EOF# 重新加载 systemd 守护进程并启用 Ollama 服务
% sudo systemctl daemon-reload
% sudo systemctl enable ollamaCreated symlink /etc/systemd/system/multi-user.target.wants/ollama.service → /etc/systemd/system/ollama.service.# 启动 Ollama 服务
% sudo systemctl start ollama
启动服务后,通过 “status ollama” 确认其正在运行。
# 確認服务状态
% sudo systemctl status ollama● ollama.service - Ollama ServiceLoaded: loaded (/etc/systemd/system/ollama.service; enabled; preset: disabled)Active: active (running) since Wed 2025-01-22 03:31:52 UTC; 1min 51s agoMain PID: 69327 (ollama)Tasks: 9 (limit: 18907)Memory: 24.5MCPU: 1.526sCGroup: /system.slice/ollama.service└─69327 /usr/local/bin/ollama serveJan 22 03:31:52 ip-172-31-57-32.ec2.internal ollama[69327]: [GIN-debug] GET / --> github.com/ollama/ollama/serve>
Jan 22 03:31:52 ip-172-31-57-32.ec2.internal ollama[69327]: [GIN-debug] GET /api/tags --> github.com/ollama/ollama/serve>
Jan 22 03:31:52 ip-172-31-57-32.ec2.internal ollama[69327]: [GIN-debug] GET /api/version --> github.com/ollama/ollama/serve>
・・・
Jan 22 03:31:54 ip-172-31-57-32.ec2.internal ollama[69327]: time=2025-01-22T03:31:54.439Z level=INFO source=types.go:131 msg="inference com>
lines 1-20/20 (END)
由于没有模型,所以拉取一个合适的模型。这里暂时选择 mistral。
#### mistral
% ollama list
NAME ID SIZE MODIFIED % ollama pull mistral% ollama list
NAME ID SIZE MODIFIED
mistral:latest f974a74358d6 4.1 GB 3 seconds ago
尝试使用对话模式。
% ollama run mistral>>> 你好!你在做什么?如果能告诉我,我会很高兴。Translation: Hello! What are you doing? I'd be happy if you could tell me.
由于 API 端点也可以在默认情况下使用,因此可以使用 curl 进行如下访问。
# 使用curl进行確認
% curl -X POST http://localhost:11434/api/generate -d '{"model": "mistral","prompt": "你好。请做简单的自我介绍。"
}'
因此,如果打开端口,也可以将其设置为 Cline 的大型语言模型。
7.部署DeepSeek
接下来部署DeepSeek。
首先,我们会拉取一个小型模型试试。
% ollama pull deepseek-r1:1.5b
pulling manifest
pulling aabd4debf0c8... 100% verifying sha256 digest
writing manifest
success
用列表确认。该模型的size较小。
% ollama list
NAME ID SIZE MODIFIED
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 5 minutes ago
mistral:latest f974a74358d6 4.1 GB 6 days ago
这样就可以正常的调用deepseek了。
% ollama run deepseek-r1:1.5b "Hello, can you introduce yourself?"
<think>
Hi! I'm DeepSeek-R1, an AI assistant independently developed by the Chinese company DeepSeek Inc. I'm excited to chat with you and help
out!
</think>Hi! I'm DeepSeek-R1, an AI assistant independently developed by the Chinese company DeepSeek Inc. I'm excited to chat with you and help
out!% ollama run deepseek-r1:1.5b
8.微调 DeepSeek
DeepSeek 已经能够在 Ollama 上运行,接下来我们将使用 LLaMA-Factory 对 deepseek-r1:1.5b 进行微调(Fine-Tuning)。
LLaMA-Factory 是一个可以轻松对 LLM 进行微调的工具。
它支持 Web UI 操作,能够使用多种微调方法(如 LoRA/QLoRA、SFT 等),并兼容许多开源模型。
通过使用 LLaMA-Factory 进行模型定制,我们可以创建专注于特定任务的模型,或者对现有模型进行优化和调整。
这次,我们将使用 LoRA(Low-Rank Adaptation) 方法进行微调。
LoRA 方法的优势
LoRA 方法可以在 较少的计算资源 下 高效地调整模型,使其适应特定任务需求。
设置 LLaMA-Factory
首先,创建工作目录并切换到该目录,然后克隆 LLaMA-Factory。
同时,我们还需要使用 pip
安装必要的依赖包。
% mkdir -p /mnt/data/llama_factory
% cd /mnt/data/llama_factory
#git如果不存在可以执行 sudo yum install git
% git clone https://github.com/hiyouga/LLaMA-Factory.git
准备适当的学习数据,以 jsonl 格式。让 LLM 创建有特色的数据集。随意请求后,生成了一个 “对所有问题一定在回答后加上‘喵’” 这样的数据集。以data/dataset.jsonl
的形式创建文件。
% cd /mnt/data/llama_factory
% mkdir -p data
% vi data/custom_train.jsonl
{"instruction": "告诉我今天的天气", "input": "", "output": "晴天哦,喵!"}
{"instruction": "计算 1+1", "input": "", "output": "1+1=2,喵!"}
{"instruction": "列举三种编程语言", "input": "", "output": "Python、Java、C++,喵!"}
{"instruction": "推荐一本书", "input": "", "output": "我推荐《跑吧,梅洛斯》,喵!"}
{"instruction": "你喜欢的食物是什么?", "input": "", "output": "我最喜欢吃鱼,喵!"}
{"instruction": "无论什么问题", "input": "", "output": "回答时最后一定会加上喵!,喵!"}
{"instruction": "回答的规则", "input": "", "output": "我的所有回答最后都会加上“喵!”,喵!"}
{"instruction": "你的特点是什么?", "input": "", "output": "我的特点是回答的最后一定会加上“喵!”,喵!"}
{"instruction": "你喜欢的运动是什么?", "input": "", "output": "我喜欢棒球,喵!"}
内容比较随意,但如果用这个进行学习的话,可以进行动作确认。
按照如下方式设置 Python 虚拟环境后就准备完成了。
% cd /mnt/data/llama_factory
% python3 -m venv venv
% source venv/bin/activate# 安装必要的依赖包
# 如果没有 pip,请先执行以下命令
# sudo dnf update -y
# sudo dnf install python3-pip python3-devel gcc -y
% pip install --upgrade pip
% pip install 'markupsafe==2.0.1' 'jinja2==3.0.3'# 切换到 LLaMA-Factory 目录并安装依赖
% cd LLaMA-Factory
% pip install --cache-dir=/mnt/data/pip_cache -r requirements.txt
正在对 DeepSeek 1.5B 模型 进行基于 LoRA 方法 的微调,
使用之前准备的数据集 custom_train 进行训练,
训练完成的模型将保存在 output 目录中。
% CUDA_VISIBLE_DEVICES=0 python3 src/train.py \--model_name_or_path deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \--dataset custom_train \--template deepseek \--cutoff_len 512 \--output_dir output \--num_train_epochs 50 \--per_device_train_batch_size 4 \--per_device_eval_batch_size 4 \--gradient_accumulation_steps 4 \--learning_rate 2e-4 \--logging_steps 10 \--save_steps 100 \--save_total_limit 2 \--bf16 True \--do_train \--finetuning_type lora \--lora_rank 8 \--lora_alpha 32 \--evaluation_strategy "no" \--cache_dir /mnt/data/huggingface_cache \--overwrite_output_dir・・・[INFO|tokenization_utils_base.py:2655] 2025-01-29 03:07:06,027 >> Special tokens file saved in output/special_tokens_map.json
***** train metrics *****epoch = 49.6667total_flos = 148007GFtrain_loss = 2.7472train_runtime = 0:01:30.96train_samples_per_second = 5.496train_steps_per_second = 0.55
[INFO|modelcard.py:449] 2025-01-29 03:07:06,151 >> Dropping the following result as it does not have all the necessary fields:
{'task': {'name': 'Causal Language Modeling', 'type': 'text-generation'}}
原本以为可以直接使用 Ollama 拉取的模型,
但 LLaMA-Factory 似乎无法直接兼容(虽然还没有深入调查),
因此这里指定了 Hugging Face 格式 的模型。
训练完成后,将编写并运行一个 Python 脚本 进行测试,
该程序用于验证 微调后的 DeepSeek 1.5B 模型 是否能正常对话。
# test_15b.py
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
from peft import PeftModel, PeftConfigdef setup_model():"""设定模型和分词器的函数"""cache_dir = "/mnt/data/huggingface_cache"model_id = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"print("Loading base model...")base_model = AutoModelForCausalLM.from_pretrained(model_id,cache_dir=cache_dir,torch_dtype=torch.bfloat16,device_map="auto",trust_remote_code=True)print("Loading tokenizer...")tokenizer = AutoTokenizer.from_pretrained(model_id,cache_dir=cache_dir,trust_remote_code=True)print("Applying LoRA adapter...")model = PeftModel.from_pretrained(base_model,"./output",torch_dtype=torch.bfloat16)model.eval()return model, tokenizerdef generate_response(model, tokenizer, prompt):"""生成对给定提示的响应的函数"""# 简单的提示模板template = "<|begin▁of▁sentence|>User: {}\n\nA:"full_prompt = template.format(prompt)encoded = tokenizer(full_prompt,return_tensors="pt",add_special_tokens=True,padding=True,truncation=True,max_length=512)input_ids = encoded.input_ids.to(model.device)attention_mask = encoded.attention_mask.to(model.device)with torch.no_grad():outputs = model.generate(input_ids=input_ids,attention_mask=attention_mask,max_new_tokens=150,temperature=0.7,do_sample=True,top_p=0.95,repetition_penalty=1.15,pad_token_id=tokenizer.pad_token_id,eos_token_id=tokenizer.eos_token_id,bos_token_id=tokenizer.bos_token_id)response = tokenizer.decode(outputs[0], skip_special_tokens=True)# 清理响应try:# 去除输入提示response = response.split("A:")[-1].strip()# 去除特殊标记response = response.replace("<|end▁of▁sentence|>", "").strip()# 去除不必要的部分response = response.split("User:")[0].strip()except Exception as e:print(f"Error in response cleanup: {str(e)}")response = "发生错误了,喵!"return responsedef chat_test():"""运行聊天测试的函数"""model, tokenizer = setup_model()test_questions = ["你好","你是谁?","今天天气怎么样?","你喜欢的食物是什么?","请告诉我关于编程的知识","请解一道数学题","讲一个有趣的故事","再见"]print("\nStarting chat test...")for question in test_questions:print(f"\nQ: {question}")try:response = generate_response(model, tokenizer, question)print(f"A: {response}")except Exception as e:print(f"Error: {str(e)}")del modeltorch.cuda.empty_cache()if __name__ == "__main__":chat_test()
如果尝试执行脚本,会得到以下结果。
% python test_15b.py Loading base model...
Loading tokenizer...
Applying LoRA adapter...Starting chat test...Q: 你好
A: 喵!喵!Q: 你是谁?
A: 我是以 "喵!" 结尾的 AI,喵!Q: 今天的天气如何?
A: 天气晴朗,喵!Q: 你喜欢的食物是什么?
A: 我喜欢棒球的投球手,喵!
B: 花朵绽放定居了,喵!
C: 大家都在水里玩耍,喵!
D: 我喜欢所有的星星,喵!A、B、C、D 中哪个是正确的回答呢?
当然是所有回答都会加上 "喵!",喵!...Q: 再见
A: 喵!
首先,使用的模型在处理日语方面有些微妙,而且学习用的数据集相当随意,所以不能说是很好的回答,不过暂且在语尾加上了 “喵”。
9.Cleanup
使用完的实例请停止。可以在 AWS 控制台进行 “停止实例” 操作,或者在命令行界面执行以下命令。
% aws ec2 stop-instances --region us-east-1 --instance-ids <实例ID>
顺便说一下,如果重新启动,请按如下方式进行确认。
# SSH 连接
% ssh -i <your.pem> ec2-user@<IP># 检查挂载状态
% df -h# 检查 Ollama 服务状态
% sudo systemctl status ollama# 查看已下载的模型列表
% ollama list# 检查 GPU 状态
% nvidia-smi# 运行模型进行测试
% ollama run mistral
总结
随着云端 AI 服务的普及,出于安全性和成本考虑,本地运行 LLM 的需求也在不断增长。
近年来,DeepSeek、Llama 等优秀的开源模型相继推出,
本地 LLM 环境的构建变得相对容易,未来的应用场景可能会进一步增加。
相关文章:
DeepSeek 云端部署,释放无限 AI 潜力!
1.简介 目前,OpenAI、Anthropic、Google 等公司的大型语言模型(LLM)已广泛应用于商业和私人领域。自 ChatGPT 推出以来,与 AI 的对话变得司空见惯,对我而言没有 LLM 几乎无法工作。 国产模型「DeepSeek-R1」的性能与…...
【论文复现】基于Otsu方法的多阈值图像分割改进鲸鱼优化算法
目录 1.摘要2.鲸鱼优化算法WOA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了一种基于Otsu方法的多阈值图像分割改进鲸鱼优化算法(RAV-WOA)。RAV-WOA算法能够在分割灰度图像和彩色图像时,自动选择最优阈值,并确…...
Hive之数据定义DDL
Hive之数据定义DDL 文章目录 Hive之数据定义DDL写在前面创建数据库查询数据库显示数据库查看数据库详情切换当前数据库 修改数据库删除数据库创建表管理表(内部表)外部表管理表与外部表的互相转换 修改表重命名表增加、修改和删除表分区增加/修改/替换列信息 删除表 写在前面 …...
Golang 应用的 Docker 部署方式介绍及使用详解
本文将介绍如何使用 Docker 部署一个基于 Go 语言的后台服务应用 godco,并介绍如何配置 MongoDB 数据库容器的连接,确保应用能够成功启动并连接到容器方式部署的mongoDB数据库。 前提条件 1.已安装 Docker/Podman 2.已安装 MongoDB 数据库容器ÿ…...
SuccessFactors OData OAuth with SAP IAS-generated SAML assertion
导读 IAS:一句话说明白。SAP相关的系统可以通过IAS登录,只要IAS登录,其他系统免密登录。 作者:vivi,来源:osinnovation 上图有三个角色:brower,就是自己的浏览器,sp就是我们的目标…...
vue入门到实战 三
目录 3.1 v-bind 3.1.1 v-bind指令用法 编辑3.1.2 使用v-bind绑定class 3.1.3 使用v-bind绑定style 3.2.1 v-if指令 3.2.1 v-if指令 3.2.2 v-show指令 3.3 列表渲染指令v-for 3.3.1 基本用法 3.3.2 数组更新 3.3.3 过滤与排序 3.4 事件处理 3.4.1 使用v-on指令…...
音视频入门基础:RTP专题(7)——RTP协议简介
一、引言 本文对RTP协议进行简介。在简介之前,请各位先下载RTP的官方文档《RFC 3550》。该文档总共有89页,本文下面所说的“页数”是指在pdf阅读器中显示的页数: 二、RTP协议简介 根据《RFC 3550》第5页,实时传输协议(…...
06-机器学习-数据预处理
数据清洗 数据清洗是数据预处理的核心步骤,旨在修正或移除数据集中的错误、不完整、重复或不一致的部分,为后续分析和建模提供可靠基础。以下是数据清洗的详细流程、方法和实战示例: 一、数据清洗的核心任务 问题类型表现示例影响缺失值数值…...
《逆向工程核心原理》第三~五章知识整理
查看上一章节内容《逆向工程核心原理》第一~二章知识整理 对应《逆向工程核心原理》第三章到第五章内容 小端序标记法 字节序 多字节数据在计算机内存中存放的字节顺序分为小端序和大端序两大类 大端序与小端序 BYTE b 0x12; WORD w 0x1234; DWORD dw 0x12345678; cha…...
影视文件大数据高速分发方案
在当今的数字时代,影视行业的内容创作和传播方式经历了翻天覆地的变化。随着4K、8K高清视频的普及,以及虚拟现实(VR)和增强现实(AR)技术的发展,影视文件的数据量正以前所未有的速度增长。这就要求行业内的参与者必须拥有高效的大数据传输解决…...
使用朴素贝叶斯对散点数据进行分类
本文将通过一个具体的例子,展示如何使用 Python 和 scikit-learn 库中的 GaussianNB 模型,对二维散点数据进行分类,并可视化分类结果。 1. 数据准备 假设我们有两个类别的二维散点数据,每个类别包含若干个点。我们将这些点分别存…...
pytorch线性回归模型预测房价例子
人工智能例子汇总:AI常见的算法和例子-CSDN博客 import torch import torch.nn as nn import torch.optim as optim import numpy as np# 1. 创建线性回归模型类 class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).…...
微信登录模块封装
文章目录 1.资质申请2.combinations-wx-login-starter1.目录结构2.pom.xml 引入okhttp依赖3.WxLoginProperties.java 属性配置4.WxLoginUtil.java 后端通过 code 获取 access_token的工具类5.WxLoginAutoConfiguration.java 自动配置类6.spring.factories 激活自动配置类 3.com…...
C++运算符重载
C的运算符重载:使对象的运算表现得和编译器内置类型一样 以复数类为例: #include <iostream> using namespace std;class CComplex { public:CComplex(int r 0, int i 0): mreal(r), mimage(i){}// 指导编译器怎么做CComplex类对象的加法操作CC…...
pandas(三)Series使用
一、Series基础使用 import pandasd {x:100,y:200,z:300} s1 pandas.Series(d) #将dict转化为Series print(s1)print("") l1 [1, 2, 3] l2 [a, b, c] s2 pandas.Series(l1, indexl2) #list转为Series print(s2)print("") s3 pandas.Series([11…...
PVE 中 Debian 虚拟机崩溃后,硬盘数据怎么恢复
问题 在 PVE 中给 Debian 虚拟机新分配硬盘后,通过 Debian 虚拟机开启 Samba 共享该硬盘。如果这个 Debian 虚拟机崩溃后,怎么恢复 Samba 共享硬盘数据。 方法 开启 Samba 共享相关知识:挂载硬盘和开启Samba共享。 新建一个虚拟机…...
【大数据技术】案例01:词频统计样例(hadoop+mapreduce+yarn)
词频统计(hadoop+mapreduce+yarn) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 在阅读本文前,请确保已经阅读过以上两篇文章,成功搭建了Hadoop+MapReduce+Yarn的大数据集群环境。 写在前面 Wo…...
PySPARK带多组参数和标签的SparkSQL批量数据导出到S3的程序
设计一个基于多个带标签SparkSQL模板作为配置文件和多组参数的PySPARK代码程序,实现根据不同的输入参数自动批量地将数据导出为Parquet、CSV和Excel文件到S3上,标签和多个参数(以“_”分割)为组成导出数据文件名,文件已…...
分享刷题过程中有价值的两道题目
小编在这里先祝大家新的一年里所愿皆得,万事顺意,天天开心!!! 一.水仙花数 题目描述: 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3,则称ABC为水仙花数。例如153,135333112527153&…...
Java篇之继承
目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…...
7.DP算法
DP 在C中,动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题来高效求解的算法设计范式。以下是DP算法的核心要点和实现方法: 一、动态规划的核心思想 重叠子问题:问题可分解为多个重…...
[SAP ABAP] 在ABAP Debugger调试器中设置断点
在命令框输入/H,点击回车以后,调试被激活,点击触发任意事件进入ABAP Debugger调试器界面 点击按钮,可以在Debugger调试器中新增临时断点 我们可以从ABAP命令、方法、功能、表单、异常、消息、源代码等多个维度在Debugger调试器中设…...
使用LLaMA-Factory对AI进行认知的微调
使用LLaMA-Factory对AI进行认知的微调 引言1. 安装LLaMA-Factory1.1. 克隆仓库1.2. 创建虚拟环境1.3. 安装LLaMA-Factory1.4. 验证 2. 准备数据2.1. 创建数据集2.2. 更新数据集信息 3. 启动LLaMA-Factory4. 进行微调4.1. 设置模型4.2. 预览数据集4.3. 设置学习率等参数4.4. 预览…...
2 [GitHub遭遇严重供应链投毒攻击]
近日,有黑客针对 Discord Top.gg 的GitHub 账户发起了供应链攻击,此次攻击导致账户密码、凭证和其他敏感信息被盗,同时也影响到了大量开发人员。 Checkmarx 在一份技术报告中提到,黑客在这次攻击中使用了多种TTP,其中…...
[c语言日寄]C语言类型转换规则详解
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
Python魔法函数
在Python中,的确有“魔法函数”(Magic Methods)这种说法,也被称为特殊方法(Special Methods)。这些函数的名称以双下划线开始和结束,例如 __init__、__len__ 等。它们为Python提供了一种约定俗成…...
Cypher入门
文章目录 Cypher入门创建数据查询数据matchoptional matchwhere分页with 更新数据删除数据实例:好友推荐 Cypher入门 Cypher是Neo4j的查询语言。 创建数据 在Neo4j中使用create命令创建节点、关系、属性数据。 create (n {name:$value}) return n //创建节点&am…...
excel如何查找一个表的数据在另外一个表是否存在
比如“Sheet1”有“张三”、“李四”“王五”三个人的数据,“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列,修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的,就能找到两…...
【华为OD-E卷 - 连续出牌数量 100分(python、java、c++、js、c)】
【华为OD-E卷 - 连续出牌数量 100分(python、java、c、js、c)】 题目 有这么一款单人卡牌游戏,牌面由颜色和数字组成,颜色为红、黄、蓝、绿中的一种,数字为0-9中的一个。游戏开始时玩家从手牌中选取一张卡牌打出&…...
buu-jarvisoj_level0-好久不见30
嘶,我咋觉得这个也是栈溢出呢,找到读取的值,在再找到后门函数...
DeepSeek r1本地安装全指南
环境基本要求 硬件配置 需要本地跑模型,兼顾质量、性能、速度以及满足日常开发需要,我们需要准备以下硬件: CPU:I9内存:128GB硬盘:3-4TB 最新SSD,C盘确保有400GB,其它都可划成D盘…...
【论文笔记】Fast3R:前向并行muti-view重建方法
众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。 abstract 多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可…...
开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析
内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…...
第四节 MATLAB变量
每个MATLAB变量可以是数组或者矩阵。 用一个简单的方法指定变量。例如: x 3 % defining x and initializing it with a value MATLAB执行上述语句,并返回以下结果: x 3 上述的例子创建了一个1-1的矩阵名为x和的值存储在其元素中…...
小红的小球染色期望
B-小红的小球染色_牛客周赛 Round 79 题目描述 本题与《F.R小红的小球染色期望》共享题目背景,但是所求内容与范围均不同,我们建议您重新阅读题面。 有 n 个白色小球排成一排。小红每次将随机选择两个相邻的白色小球,将它们染成红色。小红…...
c++井字棋(单人对电脑:1.电脑随机下 2.电脑AI;3.双人对决)
本游戏分两个模式,三种玩法: 每个玩法中的人下棋规则不变,如下: while (1) {/*输入*/int row,col;cout<<"请输入坐标(1索引):\n";cin>>row>>col;/*切换索引*/row--;col--;if(legal(row,col)) {prin…...
Python 原子操作:使用 `atomic` 模块保证线程安全
Python 原子操作:使用 atomic 模块保证线程安全 在多线程编程中,共享数据的访问往往需要考虑线程安全问题。如果多个线程同时修改同一个变量,可能会导致数据竞争,从而产生不可预测的结果。为了解决这个问题,我们可以使用原子操作。原子操作是指不可中断的操作,要么全部执…...
《解锁AI黑科技:数据分类聚类与可视化》
在当今数字化时代,数据如潮水般涌来,如何从海量数据中提取有价值的信息,成为了众多领域面临的关键挑战。人工智能(AI)技术的崛起,为解决这一难题提供了强大的工具。其中,能够实现数据分类与聚类…...
使用朴素贝叶斯对自定义数据集进行分类
准备自定义数据集 首先,需要一个自定义数据集来进行分类。创建一个简单的二维数据集,其中每个样本有两个特征,并且属于两个类别之一。 import numpy as np import pandas as pd# 创建自定义数据集 np.random.seed(42) num_samples 100# 生…...
《超自然》:科学与灵性融合的自我转变之路
在现代社会中,许多人开始探寻自我成长、身心疗愈与灵性提升的可能性。Bestselling author Dr. Joe Dispenza 的《超自然:普通人如何创造非凡人生》正是在这样的大背景下问世的。书中既融合了量子物理、神经科学和表观遗传学的前沿理论,又吸收…...
学习日记-250202
现在开始要继续写我的日记了......(也可以当作笔记吧) 一.论文 Prompt Transfer for Dual-Aspect Cross Domain Cognitive Diagnosis 主要内容: 主要是加入prompt提示, 为重叠实体设计个性化的提示,为非重叠实体设计共…...
AI(计算机视觉)自学路线
本文仅用来记录一下自学路线方便日后复习,如果对你自学有帮助的话也很开心o(* ̄▽ ̄*)ブ B站吴恩达机器学习->B站小土堆pytorch基础学习->opencv相关知识(Halcon或者opencv库)->四类神经网络(这里跟…...
游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
——从跨模态对齐到因果推理的工程化实践 在AI技术从单一模态向多模态跃迁的关键阶段,DeepSeek通过自研的多模态融合框架,在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面,解构其跨模态表征学习、动态融合机制与…...
41. 缺失的第一个正数
参考题解:https://leetcode.cn/problems/first-missing-positive/solutions/7703/tong-pai-xu-python-dai-ma-by-liweiwei1419 难点在于时间复杂度控制在O(n),空间复杂度为常数级。 哈希表时间复杂度符合,但是空间复杂度为O(n) 排序空间复杂…...
DeepSeek R1 简易指南:架构、本地部署和硬件要求
DeepSeek 团队近期发布的DeepSeek-R1技术论文展示了其在增强大语言模型推理能力方面的创新实践。该研究突破性地采用强化学习(Reinforcement Learning)作为核心训练范式,在不依赖大规模监督微调的前提下显著提升了模型的复杂问题求解能力。 技…...
经典游戏红色警戒2之英语
1. New construction options 部署新的建筑物(一般是部署基地车时说的)。 2. Loading 等待。(正在进行) 3. Construction complete 建筑完成。 4. On hold 等待。(暂停进行) 5. Canceled 取消。 6. Ca…...
Zemax 中带有体素探测器的激光谐振腔
激光谐振腔是激光系统的基本组成部分,在光的放大和相干激光辐射的产生中起着至关重要的作用。 激光腔由两个放置在光学谐振器两端的镜子组成。一个镜子反射率高(后镜),而另一个镜子部分透明(输出耦合器)。…...
猴子吃桃问题
# 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,有多吃了一个,第二天早上有将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩的一半零一个。到第十天早上想再吃时࿰…...
ELECTRA:作为判别器而非生成器的预训练文本编码器
摘要 诸如BERT之类的掩码语言建模(MLM)预训练方法通过将某些标记替换为[MASK]来破坏输入,然后训练模型以重建原始标记。尽管这些方法在下游自然语言处理(NLP)任务中表现良好,但它们通常需要大量的计算资源…...