|-转 一键安装TiDB开发环境(centos7)
Tidb的安装工具是tiup
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh source .bash_profile
只要一个命令即可
tiup playground --db=2 --kv=3 --pd=3 --monitor
说明:
–db:多少个计算节点 (最少2个)
–kv:多少个存储节点(最少3个)
–pd:多少个管理节点 (PD:Placement Driver)(最少3个)
–monitor:开启监控,使用Prometheus+Grafana进行监控(1个即可)
关键字
TiDB、TiKV、Placement Driver (PD) 主要作用?
- TiDB 是 Server 计算层,主要负责 SQL 的解析、制定查询计划、生成执行器。
- TiKV 是分布式 Key-Value 存储引擎,用来存储真正的数据,简而言之,TiKV 是 TiDB 的存储引擎。
- PD 是 TiDB 集群的管理组件,负责存储 TiKV 的元数据,同时也负责分配时间戳以及对 TiKV 做负载均衡调度。
附整体架构
...
浏览更多内容请先登录。
立即注册
更新于:2022-05-25 23:56:37
|-转 执行sh脚本报错 /bin/bash^M: bad interpreter: No such file or directory
执行sh脚本报错 /bin/bash^M: bad interpreter: No such file or directory
这个 ^M 是关键!它表示:脚本是 Windows 格式(CRLF 换行)
Linux 只认 LF 换行,而 Windows 用 CRLF(\r\n),那个 ^M 就是 \r(回车符)。
所以系统试图找一个叫 /bin/bash^M 的解释器,但实际只有 /bin/bash,于是报错。...
浏览更多内容请先登录。
立即注册
更新于:2025-09-03 07:40:13
|-转 测试模型训练的小的python脚本
简单的一个测试脚本,用来测硬件做深度学习训练时的性能。
# train_simple.py import torch import time from diffusers import UNet2DModel from pathlib import Path import platform import psutil # ----------------------------- # 1. 系统信息打印 # ----------------------------- def print_system_info(): print("🔍 系统信息检测中...") cpu_name = platform.processor() if not cpu_name: try: with open("/proc/cpuinfo", "r") as f: for line in f: if "model name" in line: cpu_name = line.split(":")[1].strip().split(" @ ")[0] break except: cpu_name = "Unknown CPU" cpu_cores = psutil.cpu_count(logical=False) cpu_threads = psutil.cpu_count(logical=True) print(f"🧮 CPU: {cpu_name} ({cpu_cores} 核 / {cpu_threads} 线程)") memory = psutil.virtual_memory() total_ram = memory.total / (1024**3) available_ram = memory.available / (1024**3) print(f"🧠 内存: {total_ram:.2f} GB 总计, {available_ram:.2f} GB 可用") if torch.cuda.is_available(): gpu_count = torch.cuda.device_count() print(f"🎮 GPU: {gpu_count} 张可用 (CUDA)") for i in range(gpu_count): gpu_name = torch.cuda.get_device_name(i) print(f" 🟩 [{i}] {gpu_name}") else: print("🎮 GPU: 未检测到 (CUDA 不可用)") print("-" * 50) print_system_info() print("🚀 开始执行 UNet2DModel 分阶段训练测试...") # ----------------------------- # 2. 全局计时开始 # ----------------------------- total_start_time = time.time() # 创建模型(不指定设备) model = UNet2DModel( sample_size=32, in_channels=3, out_channels=3, layers_per_block=1, block_out_channels=(32, 64), down_block_types=("DownBlock2D", "AttnDownBlock2D"), up_block_types=("UpBlock2D", "AttnUpBlock2D"), ) # 模拟数据 batch_size = 2 x_cpu = torch.randn(batch_size, 3, 32, 32) y_cpu = torch.randn(batch_size, 3, 32, 32) timesteps_cpu = torch.zeros(batch_size, dtype=torch.long) # 显示模型参数量 def count_params(m): return sum(p.numel() for p in m.parameters() if p.requires_grad) print(f"🧠 模型参数量: {count_params(model):,}") # 优化器(后面会重建) optimizer = None # ----------------------------- # 3. 阶段1:CPU 训练 # ----------------------------- print("🚀 开始 CPU 训练...") cpu_start_time = time.time() # 使用 CPU model_cpu = UNet2DModel( sample_size=32, in_channels=3, out_channels=3, layers_per_block=1, block_out_channels=(32, 64), down_block_types=("DownBlock2D", "AttnDownBlock2D"), up_block_types=("UpBlock2D", "AttnUpBlock2D"), ) model_cpu.train() model_cpu = model_cpu.to("cpu") optimizer = torch.optim.Adam(model_cpu.parameters(), lr=1e-3) n_steps = 10 for step in range(n_steps): optimizer.zero_grad() output = model_cpu(x_cpu, timesteps_cpu).sample loss = torch.nn.functional.mse_loss(output, y_cpu) loss.backward() optimizer.step() print(f"Step {step+1:2d} | Device: CPU | Loss: {loss.item():.6f}") cpu_end_time = time.time() cpu_elapsed = cpu_end_time - cpu_start_time print(f"⏱️ CPU 训练耗时: {cpu_elapsed:.2f} 秒") # ----------------------------- # 4. 阶段2:GPU 训练(如果可用) # ----------------------------- gpu_elapsed = 0.0 if torch.cuda.is_available(): print("🚀 开始 GPU 训练...") gpu_start_time = time.time() model_gpu = UNet2DModel( sample_size=32, in_channels=3, out_channels=3, layers_per_block=1, block_out_channels=(32, 64), down_block_types=("DownBlock2D", "AttnDownBlock2D"), up_block_types=("UpBlock2D", "AttnUpBlock2D"), ) model_gpu.train() device = torch.device("cuda") model_gpu = model_gpu.to(device) x_gpu = x_cpu.to(device) y_gpu = y_cpu.to(device) timesteps_gpu = timesteps_cpu.to(device) optimizer = torch.optim.Adam(model_gpu.parameters(), lr=1e-3) for step in range(n_steps): optimizer.zero_grad() output = model_gpu(x_gpu, timesteps_gpu).sample loss = torch.nn.functional.mse_loss(output, y_gpu) loss.backward() optimizer.step() print(f"Step {step+1:2d} | Device: GPU | Loss: {loss.item():.6f}") gpu_end_time = time.time() gpu_elapsed = gpu_end_time - gpu_start_time print(f"⏱️ GPU 训练耗时: {gpu_elapsed:.2f} 秒") else: print("⚠️ GPU 不可用,跳过 GPU 训练阶段") # ----------------------------- # 5. 保存模型(仅保存最后一次训练的模型) # ----------------------------- save_dir = Path("output") / "test-unet-final" save_dir.mkdir(parents=True, exist_ok=True) # 保存 GPU 模型优先,否则保存 CPU final_model = model_gpu if torch.cuda.is_available() else model_cpu final_model.eval() final_model.save_pretrained(save_dir) print(f"💾 模型已保存至: {save_dir.resolve()}") # 清理命令 if platform.system() == "Windows": delete_cmd = f'rd /s /q "{save_dir}"' else: delete_cmd = f'rm -rf "{save_dir}"' print(f"📋 清理命令(如需删除): {delete_cmd}") # ----------------------------- # 6. 总耗时统计 # ----------------------------- total_end_time = time.time() total_elapsed = total_end_time - total_start_time print(f"✅ 总训练耗时: {total_elapsed:.2f} 秒") print(f"📊 详细耗时: CPU={cpu_elapsed:.2f}s, GPU={gpu_elapsed:.2f}s") print("🎉 所有训练阶段完成!环境一切正常,可开始真实训练。")
20250903...
浏览更多内容请先登录。
立即注册
更新于:2025-09-03 14:01:45
相关内容
说说国产电影
大陆电影《霸王别姬》到底如何?
周星驰的喜剧之王
真正的难忘,再说周星驰,《大话西游》两部曲
不得不提的《英雄本色》,一帮演员和剧组太给力了,当然导演厉害了!
2010年后的国产电影,看来除了《让子弹飞》其他都可以带过了?
《芳华》这样露大腿合适吗?
《国士无双》还是那么好看
算是知道花木兰那么多成本都花在哪了
评论《八佰》-为了照顾部分同学的逻辑思维能力,俺们通俗一把
【豆瓣评论】评《中国合伙人》
贺岁片 东成西就(1993)(国语) 精彩片段
推荐内容