深度学习可复现相关设置
确定性设置随机种子设置 随机函数是最大的不确定性来源,包含了模型参数的随机初始化,样本的shuffle。
PyTorch 随机种子
python 随机种子
numpy 随机种子
# PyTorchimport torchtorch.manual_seed(0)# pythonimport randomrandom.seed(0)# Third part librariesimport numpy as npnp.random.seed(0)
CPU版本下,上述随机种子设置完成之后,基本就可实现实验的可复现了。
对于GPU版本,存在大量算法实现为不确定结果的算法,这种算法实现效率很高,但是每次返回的值会不完全一样。主要是由于浮点精度舍弃,不同浮点数以不同顺序相加,值可能会有很小的差异(小数点最末位)。
GPU算法确定性实现 GPU算法的不确定来源有两个
CUDA convolution benchmarking
nondeterministic algorithms
CUDA convolution benchmarking 是为了提升运行效率,对模型 ...
matplotlib局部放大
在数据可视化中,很多时候需要对某一区间的数据进行局部放大,以获得对比度更高的可视化效果。下面利用Python语言的Matplotlib库实现一个简单的局部放大图效果。
依赖:matplotlib和numpy
导入依赖库import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.axes_grid1.inset_locator import mark_insetfrom mpl_toolkits.axes_grid1.inset_locator import inset_axes
准备数据x = np.linspace(-0.1*np.pi, 2*np.pi, 30)y_1 = np.sinc(x)+0.7y_2 = np.tanh(x)y_3 = np.exp(-np.sinc(x))
绘图fig, ax = plt.subplots(1, 1, figsize=(6, 4))ax.plot(x, y_1, color='k', linestyle=':', lin ...
Games Corporation
微软 买买买
工作室:
暴雪:魔兽、OW
动视:使命召唤
贝塞斯达:星空辐射
索尼 索尼出品,必属精品 3A
工作室:
顽皮狗:最后生还者
Insomniac Games:蜘蛛侠
Santa Monica studio:战神
EA 收购黑洞
工作室:
重生:APEX
DICE:战地
MAXIS:模拟人生
EA Sports:FIFA
Origin:创世纪
take two interactive 工作室:
R星:GTA
2K:NBA2K
UBISOFT 3A罐头游戏
刺客信条
Far Cry
看门狗
Riot Games 腾讯100%控股
英雄联盟
瓦罗兰特
EPIC Games
虚幻引擎
堡垒之夜
Valve corporation
CSGO
Steam
dota2
Nintendo 任天堂
精灵宝可梦
塞尔达传说
马里奥
QuaDRiGa program flow
写一篇记录QuaDRiGa的程序流程
对于传播环境(例如城市、郊区、农村或树荫),典型的信道特性由LSP(Large Scale Parameters)的统计来描述。这些是延迟扩展、角扩展、阴影衰落、Ricean K因子的均值和标准差,以及它们之间的相关性。这些参数存储在用户可编辑的配置文件中,通常参数是从通道测量中提取的。典型的仿真运行包含以下步骤:
配置网络布局,包括设置发射接收机位置、定义天线属性、定义用户轨迹、定义用户轨迹上的场景、对于每一个场景配置一个传播环境;
设置配置文件中的LSP的统计属性,通常配置两个LOS场景和NLOS场景(LSP有两种方式获得,根据1自动计算或手动设置);
描述移动终端的轨迹;
每个簇被分成20个子路径,计算每个子路径和终端在轨迹上的每个位置的到达角;
计算每个出发角和到达角的天线响应;
计算多普勒频移;
将20个子路径的系数综合得到每个簇的系数;
将相邻的簇合并;
综合簇系数、时延拓展等格式化得到最终结果,返回给用户。
简化版:
设置tracks, scenarios, antennas, and network layout ...
常用视觉库控制保存质量
最近经常涉及到图像的读取和保存,读取都没什么问题,主要是保存,因为忽略保存质量参数而导致保存图像质量一般,当然最好的操作是不保存,直接在代码中对图像操作。
PIL 在Pillow中的PIL.Image.save()方法中,使用默认参数保存jpg图片的过程中发现图片被压缩的很严重,导致原来很大的图片变成几十KB。但是有些时候往往需要图片的大小不能变化太大或不能太小。这是因为在保存为jpg的过程中,PIL.Image.save()方法内部使用压缩算法对图片进行的压缩处理。
在保存的时候,加上一些参数。
form PIL import Imageimg = Image.open("xxx.jpg")img.save(img_name, quality=95)
quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。
使用此参数后,图片大小会增加。如果图片的大小还不能满足你的需求,是否还有其他方式去增加图片大小呢?
...
npy文件
最近的遇到了.npy文件,记录一下是什么以及如何存取,其实和pkl、json、yml这种差不了太多。
npy就是将numpy数组保存到磁盘的简单格式,二进制序列,其中包含了numpy数组的全部信息。
使用它的原因:
A LOT faster, also notice that we didn’t need to reshape the data since that information was contained in the .npy file.(速度更快,并且存储了numpy数组的原本结构)
Another “minor” feature of using .npy files is the reduced storage the file occupies. In this case it’s more than a 50% reduction in size. This can wary a lot though but in general the .npy files are more storage friendly.(占用内存更少)
加载npy文 ...
延迟、带宽、吞吐量和响应时间
延迟:客户端到服务器以及服务器到客户端的传输时间.
带宽:每单位时间可以通过通信通道传输的最大数据量.
吞吐量:在给定时间段内成功从一个地方移动到另一个地方的数据量.注意:数据吞吐量永远不会超过网络带宽。
响应时间:从用户发送请求到应用程序指示请求已完成并返回给用户的时间量。
延迟 延迟,也被称为网络延迟,是指数据从发送端到接收端的传输时间。这个传输时间不仅包括数据包在物理传输媒体上传播的时间,还包括了数据包在网络设备上进行处理的时间,以及在队列中等待处理的时间。延迟通常以毫秒(ms)为单位表示,尽管在某些应用中,更精确的度量也可能以微秒(μs)为单位。
往返时间 (RTT) 是网络请求从 A 到 B 以及响应从 B 到 A 所花费的时间。延迟和 RTT 均以毫秒 (ms) 为单位进行测量。
延迟可以分为多种类型,每种类型都对网络性能产生不同的影响:
传输延迟(Transmission Latency):这是数据在传输媒体上传播的时间,受到物理传输媒体的特性、传输距离和信号传输速度的影响。传输延迟通常是物理延迟的一部分。
处理延迟(Processing La ...
下载&部署LLM
Llama 2是今年下半年刚出的LLM,开源且免费商用,因此很有研究部署它的价值,所以这篇博客简单介绍如何下载和部署Llama 2。Llama 2有7B, 13B, 70B三种不同尺寸的模型。
1. Llama 2官方 注:Llama 2官方的模型针对多卡部署,因此不适用于咱们普通用户消费级显卡部署。
Github仓库:https://github.com/facebookresearch/llama
首先注册Llama 2账号:https://ai.meta.com/resources/models-and-libraries/llama-downloads/,这里的邮箱最好和hugging face的一致,后续可以下载hugging face的模型权重。
注册后邮箱会受到邮件,邮件中有一个很长的链接,这个链接后续要用到。
git clone Github的仓库到本地,然后创建虚拟环境,根据官方教程输入指令即可。
7B模型权重大概13G。
2. mlc-llm Github仓库:https://github.com/mlc-ai/mlc-llm
这是美 ...
NVIDIA GPU架构
NVIDIA GPU的架构演变历史和基本概念截止2021年,发布时间离我们最近的8种NVIDIA GPU微架构是:
Tesla
Fermi
Kepler
Maxwell
Pascal
Volta
Turing
Ampere
NVIDIA一般以历史上一些著名科学家的名字命名自己的GPU微架构,上面8种微架构分别是:特斯拉,费米,开普勒,麦克斯韦,帕斯卡,伏打,图灵,安培。
其中最新的是2020年宣布的Ampere架构。
Tesla 架构Tesla 架构的资料在官网也没找到多少,不过这是英伟达第一个实现统一着色器模型的微架构。
经典型号是G80,在Fermi架构白皮书的开篇部分有对G80的简要介绍:
G80 是第一款支持 C 语言的 GPU,让程序员无需学习新的编程语言即可使用GPU的强大功能。
G80 是第一款用单一、统一的处理器取代独立的顶点和像素管道的 GPU,该处理器可以执行顶点、几何、像素和计算程序。
G80 是第一款使用标量线程处理器的 GPU,无需程序员手动管理向量寄存器
G80 引入了单指令多线程 (SIMT) 执行模型,即多个独立线程使用一条指令并发执行。
G80 ...