当前位置: 首页 > news >正文

二进制文件

大多数人听到“二进制”的时候,脑海里可能马上就会联想到电影《黑客帝国》中由“0”和“1”组成的矩阵。

笔者不打算在这里详细讨论二进制的运算、反码、补码之类枯燥的东西,但有几个和开发相关的概念需要做一点澄清和普及。因为这些内容就像空气——用的时候不觉得,但一认真审视起来就容易犯迷糊。

我们在计算机中看到的各种文件,例如文本、图片、音乐、视频、Word文件等,对于计算机来说,没有任何差别,因为它们都是由“0”和“1”组成的。但这么说还是太笼统,举个例子就很容易理解了。

首先,在Windows中下载并安装一个叫做Hex Editor Neo的软件,这是一种十六进制编辑器。当然也可以通过安装Vscode或Notepad++的插件的方式安装。

然后,在Windows的桌面上新建一个txt文本文件,名字可以任意起,在文件其中输入一些内容后保存,比如输入“Java编程语言”。

关闭文本编辑器窗口,然后光标悬停在文本文件的图标上并单击鼠标右键,选择用Hex Editor Neo软件打开它,如图1-4所示。

图1-4 用Hex Editor Neo打开文本文件

打开后如图1-5所示。

图1-5 用Hex Editor Neo打开文本文件后显示的内容

可以很清楚地看到,整个区域分为左中右三个部分。左边部分显示的是十六进制序号;中间部分显示的是刚才输入的内容,用十六进制数字表示;而右边则是内容的字符编码,只不过中文都变成了乱码。现在换成用二进制来显示它。依次点击菜单上的“View”->“Display As”->“Binary”。

切换之后,显示出来的二进制内容如图1-6所示。

图1-6 用二进制显示文本内容

可以看到第一行第一列,原来显示十六进制的“4a”换成了二进制“01001010”。这正是“4a”对应的二进制数值,而将“01001010”转换成十进制数就是“74”。为什么要转换为十进制数呢?因为只有转换为十进制才能通过ASCII码表查到“74”所对应的字符是大写字母“J”,也就是刚才在文本中输入的第一个字母,如图1-7所示。

图1-7 十进制数字“74”对应字母“J”

依此类推,这些十六进制内容转换之后正是刚才输入的“Java编程语言”。

刚才展示的是文本数据,现在再来看一下图像数据。

用Photoshop或其他画图软件创建一个10×10像素的正方形,底色为白色,如图1-8所示。

图1-8 10×10像素的白色正方形

然后再次用Hex Editor Neo软件打开它,可以看到如图1-9所示的二进制内容。

图1-9 白色正方形图片的二进制内容

上图中间部分第一行第二至四列的内容分别为“01010000”、“01001110”和“01000111”,按照图1-7中的方法,它们分别对应ASCII中的“P”、“N”、“G”。

这正是文件名后缀“PNG”。这是巧合吗?并不是,因为在右边部分的剩余内容中可以看到其他和这个文件相关的一些信息,如创建文件的软件工具,文件创建时间等信息,这和用Windows属性工具显示出来的信息是一致的,如图1-10所示。

图1-10 图形文件的属性信息

这里没有再继续深入了解,但可以断定:Hex Editor Neo显示的内容一定包含了所有Windows属性显示的内容。

从这个意义上说,如果能够完全掌握用二进制创建文件的规则,是不是可以用Hex Editor Neo代替任何软件呢?例如用Hex Editor Neo代替文本编辑器,代替Word,代替Photoshop,甚至代替IDEA来编程呢?这不但理论上是完全可行的,而且事实上也确实可行。不过,却不会有人真的那么做,因为太费时费力,效率太低,而且极易出错。

我们平常所看到的任何文件,除了文件的内容本身,还含有一部分附加信息。这些附加信息用户是看不到的,即使看到了也没有意义。因为它们是给计算机操作系统准备的,用以区分各类不同的文件类型及读取、存储方式,如图1-11所示。

图1-11 操作系统读取二进制内容的方式

从上图可以看出,操作系统和各种软件是这样工作的:

1. 读取时,操作系统通过附加信息就知道该将文件交给哪个软件处理、转译并展示;

2. 存储时,各种软件会先给文件添加专属的附加信息(软件安装时会在操作系统的注册表中“登记”这些附加信息),然后再交由操作系统一并保存;

3. 卸载后,由于对应的附加信息被从注册表中清除,所以操作系统也就不知道对应类型的文件该给哪种软件处理了。

这种附加信息有一个计算机专有名词:文件头。这也正是操作系统和各种应用软件存在的意义:有些文件头十分庞大,如果要人力用二进制的方式去编写完成,无疑既费力又不讨好,但计算机却十分擅长这种精确无误且枯燥无比的重复性劳动。


当前,AI应用开发正在经历快速发展和深度融合,具体表现为在商业服务、医疗卫生、教育培训、自媒体传播等多领域全面开花。与云计算、物联网、5G技术结合,实现边缘智能;与传统软件开发过程融合,逐步标准化和模块化,实现很多基础性的编码工作;与工具和框架生态绑定,实现简化开发流程和快速迭代的目的。

作为AI应用的基础设施,大模型的重要性自然不言而喻。尤其是目前业界如火如荼的大模型训练,以其千亿级别的超大规模参数、庞大的数据与算力需求、模型的精细化调整、能源与效率的优化等,让人们想要爱它不容易。

具体来说,AI大模型训练涉及到的技术难点和关键挑战,主要包括如下七个方面。

一、数据质量与数量挑战。

训练大模型需要超大规模且高质量的数据集,但数据质量不均、标注不完整会极大地影响模型性能。而数据规模庞大时,存储和处理成本会又会显著增加。因此,应对策略包括但不限于如下方式:

  • 合理做好数据的动静分离、冷热分离及主从分离,建设企业的分层、在线/离线数仓,利用各种数据清洗和增强技术确保数据质量。
  • 采用分布式存储和“流批”框架(如Hadoop、HBase、Spark和Flink等)处理大规模或超大规模数据集。
  • 使用合成数据、增量学习或迁移学习逐步减少对大规模标注数据的依赖。

二、模型设计与优化挑战。

大模型通常具有数十亿甚至上千亿的参数,设计合理的模型架构(如Transformer)就显得尤为重要了。因为模型复杂度过高,可能导致过拟合、收敛慢、结果不准确等问题。所以,相应的应对策略如下:

  • 使用神经架构搜索(NAS)自动优化模型结构。
  • 通过引入正则化、Dropout等技术防止过拟合。
  • 利用优化算法(如AdamW)加速模型的收敛。

三、算力需求与分布式训练挑战。

大模型的训练需要巨大的计算资源来支撑,对GPU、TPU等硬件设备的需求很高。而一般商用的大模型是不可能通过单机训练来完成的,这就需要部署分布式训练模型,涉及节点间通信、数据同步以及一致性的复杂问题。可以通过以下策略来应对。

  • 部署高性能计算集群或租用算力云计算资源(如AWS、阿里云、AutoDL等)。
  • 使用AI分布式框架(如Horovod、DeepSpeed、Colossal-AI)优化多节点协作。
  • 通过混合精度训练(FP16/FP8)来降低对算力的需求。

四、训练效率与成本挑战。

AI大模型的训练时间通常耗时比较久,尤其是超大规模的AI模型,可能耗费数天、数周乃至数月。昂贵的计算资源和能源消耗会给成本带来不小的压力。可以这样来解决这些问题:

  • 使用分布式数据并行、模型并行等方法提高训练效率。
  • 通过剪枝、量化等技术减少大模型的复杂度,使之聚焦于解决主要目标。
  • 使用低功耗硬件和能效优化技术降低能源消耗。

五、模型稳定性与可控性挑战。

大模型非常容易陷入梯度爆炸或消失的问题,从而导致训练结果的不稳定,输出不可靠的结果,需要进行更为精细的控制和调优。对于这类问题,其应对策略如下:

  • 使用梯度裁剪(Gradient Clipping)防止梯度爆炸。
  • 设计合理的学习率调度策略(如Warm-up + Cosine Annealing)。
  • 使用对抗训练或多任务学习不断增强模型的鲁棒性。

六、训练后的部署与服务挑战。

大模型训练完成后的输出结果会占用大量的存储空间,推理时需要高性能硬件支持。部署大模型时需考虑延迟、吞吐量等各种性能指标。可以通过如下方式应对:

  • 使用模型压缩技术(如蒸馏、剪枝)来降低部署成本。
  • 利用分布式推理框架(如TensorRT、ONNX Runtime)加速推理。
  • 通过微服务架构和Docker技术支持弹性扩展,优化部署效率。

七、隐私与伦理问题挑战。

大规模训练数据可能包含用户敏感信息,带来隐私泄露或法律风险。而模型生成的结果又可能会存在偏见或误导性的内容,招致公众反感以及监管部门的介入。基于此,其应对策略如下:

  • 采用联邦学习和差分隐私技术保护数据安全。
  • 定期对模型进行审查,通过相关性过滤技术杜绝可能产生的风险。
  • 建立技术伦理委员会,监督AI系统的使用和影响。

综合以上所述,AI大模型训练涉及从数据准备、模型优化到资源分配、部署和伦理等“七座大山”。要成功完成训练,需要技术、资源和管理多方面的协同,同时又需要持续关注最新技术的发展以保持核心竞争力。

相关文章:

二进制文件

大多数人听到“二进制”的时候,脑海里可能马上就会联想到电影《黑客帝国》中由“0”和“1”组成的矩阵。 笔者不打算在这里详细讨论二进制的运算、反码、补码之类枯燥的东西,但有几个和开发相关的概念需要做一点澄清和普及。因为这些内容就像空气——用…...

【电子元器件】音频功放种类

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 音频功放将小信号的幅值提高至有用电平,同时保留小信号的细节,这称为线性度。放大器的线性…...

linux之vim

一、模式转换命令 vim主要有三种模式:命令模式(Normal Mode)、输入模式(Insert Mode)和底线命令模式(Command-Line Mode)。 从命令模式切换到输入模式:i:在当前光标所在…...

QT的ui界面显示不全问题(适应高分辨率屏幕)

//自动适应高分辨率 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);一、问题 电脑分辨率高,默认情况下,打开QT的ui界面,显示不全按钮内容 二、解决方案 如果自己的电脑分辨率较高,可以尝试以下方案:自…...

数据结构--串、数组和广义表

串 定义:串(String)是由零个或多个字符组成的有限序列。 子串:串中任意个连续字符组成的子序列称为该串的子串。 主串:包含子串的串相应地称为主串。 字符位置:字符在该序列中的序号为该字符在串中的位置…...

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略 导读:这篇博文介绍了 Lares,一个由简单的 AI 代理驱动的智能家居助手模拟器,它展现出令人惊讶的解决问题能力。 >> 背景痛点:每天都有新的…...

1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)

一、mysql2 概述 mysql2 是一个用于 Node.js 的 MySQL 客户端库 mysql2 是 mysql 库的一个改进版本,提供了更好的性能和更多的功能 使用 mysql2 之前,需要先安装它 npm install mysql2 二、mysql2 初识案例 1、数据库准备 创建数据库 testdb CREAT…...

企业邮箱为什么不能经常群发邮件?

企业邮箱是用企业域名作为后缀的邮箱,虽然企业邮箱确实具备群发邮件的功能,但它更适用于企业内部的群发,而非用于外部推广。如果是在企业邮件域内进行群发,通常可以借助企业邮箱的邮件列表来实现。然而,对于域外的大量…...

集成运算放大电路反馈判断

集成运算放大电路 一种具有很高放大倍数的多级直接耦合放大电路,因最初用于信号运算而得名,简称集成运放或运放 模拟集成电路中的典型组件,是发展最快、品种最多、应用最广的一种 反馈 将放大电路输出信号的一部分或全部通过某种电路引回到输…...

媒体查询、浏览器一帧渲染过程

文章目录 媒体查询语法示例根据视口宽度应用不同的样式根据设备像素比应用不同的样式根据方向应用不同的样式 使用场景 浏览器一帧的渲染过程 媒体查询 媒体查询(Media Query)是CSS3中的一个重要特性,它允许开发者根据设备的特定条件&#x…...

高级排序算法(一):快速排序详解

引言 当我们处理大规模数据时,像冒泡排序、选择排序这样的基础排序算法就有点力不从心了。这时候,快速排序(Quick Sort)就派上用场了。 作为一种基于分治法的高效排序算法,快速排序在大多数情况下可以在O(n log n)的时…...

3.2 网络协议IP

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 1 定义2 虚拟互连网络3 分组在互联网中的传送4 IPv4 地址 1 定义 网际协议 IP是 TCP/IP 体系中两个最主要的协议之一,也是最重要的互连网协议之一。IPv4 和 IPv6 …...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组) 1.基础设置和安全强化(xxx 分)1.3. 任务内容: 2.安全监测和预警(xxx 分)2.1. 任务一:建立目录安…...

excel如何让单元格选中时显示提示信息?

现象: 当鼠标放在单元格上,会出现提示信息: 先选中单元格选择上方的【数据】-【数据验证】图标选择【输入信息】勾上【选定单元格时显示输入信息】输入【标题】,如:最上方图中的:姓名:输入【输…...

oscp备考,oscp系列——Kioptix Level 3靶场

Kioptix Level 3 oscp备考,oscp系列——Kioptix Level 3靶场 nmap扫描 主机发现 └─# nmap -sn 192.168.80.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-09 00:33 CST Nmap scan report for 192.168.80.1 Host is up (0.00014s latency). MAC…...

信创改造-达梦数据库配置项 dm.ini 优化

设置模式:兼容MySQL,COMPATIBLE_MODE 4 内存占比:90%,MAX_OS_MEMORY 90 目标内存:2G(不影响申请内存超过2G,但这部分内存不会回收),MEMORY_TARGET 2000 参考 https:…...

日本IT-需要掌握哪些技术框架?一篇通读

在日本从事IT工作,需要掌握的技术框架与全球范围内的趋势相似,但也有一些特定的技术和框架在日本更为流行。以下是一些在日本IT行业中常用的技术框架: Java后端 Java语言:Java在日本是一门非常稳定且受欢迎的编程语言&#xff0…...

错题:Linux C语言

题目&#xff1a;手写代码&#xff1a;判断一个数&#xff08;int类型的整数&#xff09;中有有多少1 题目&#xff1a;手写代码&#xff1a;判断一个数(转换成二进制表示时)有几个1 #include <stdio.h> int main(int argc, const char *argv[]) { //判断一个数&#xf…...

多表设计-一对多一对多-外键

一.多表设计概述&#xff1a; 二.一对多&#xff1a; 1.需求&#xff1a; 根据 页面原型 及 需求文档&#xff0c;完成部门及员工模块的表结构设计 -->部门和员工就是一对多&#xff0c;因为一个部门下会有多个员工&#xff0c;但一个员工只归属一个部门 2.页面原型&…...

Ch1:古今的manipulation与仿真、ROS和Drake介绍

不同的机器人研究与仿真 以前&#xff08;15年左右&#xff09;只能用仿真环境训练行走机器人&#xff0c;对于manipulation任务&#xff0c;有两个问题&#xff1a;1&#xff09;相机不真实&#xff1b;2&#xff09;接触行为太复杂。 I remember just a few years ago (~201…...

JAVA秋招面试题精选-第一天总结

目录 分栏简介&#xff1a; 问题一&#xff1a;订单表每天新增500W条数据&#xff0c;分库分表应该怎么设计&#xff1f; 问题难度以及频率&#xff1a; 问题导向&#xff1a; 满分答案&#xff1a; 举一反三&#xff1a; 问题总结&#xff1a; 问题二&#xff1a;解释…...

服务器卸载安装的 Node.js

卸载安装的 Node.js 版本&#xff0c;具体步骤取决于你是通过包管理器&#xff08;如 yum 或 dnf&#xff09;安装的&#xff0c;还是通过 nvm (Node Version Manager) 安装的。以下是针对这两种情况的指南。 通过包管理器卸载 Node.js 如果你是通过 yum 或 dnf 安装的 Node.…...

深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(下)

文章目录 六、playbook运行playbook方式Playbook VS ShellScripts忽略错误 ignore_errorshandlers和notify结合使用触发条件playbook中tags的使用playbook中变量的使用invertory参数模板templates迭代与条件判断迭代&#xff1a;with_items迭代嵌套子变量roles 六、playbook 运…...

使用go生成、识别二维码

1、下载 # 创建目录 # 进入目录 # 执行 go mod init xxx 命令&#xff08;即&#xff1a;在当前目录初始化创建一个模块&#xff09;# 下载gozxing go get github.com/makiuchi-d/gozxing 2、生成二维码 package mainimport ("image/png""os""gith…...

LLama系列模型简要概述

LLama-1&#xff08;7B, 13B, 33B, 65B参数量&#xff1b;1.4T tokens训练数据量&#xff09; 要做真正Open的AI Efficient&#xff1a;同等预算下&#xff0c;增大训练数据&#xff0c;比增大模型参数量&#xff0c;效果要更好 训练数据&#xff1a; 书、Wiki这种量少、质量高…...

2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判

2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判 完整代码请私聊 博主 一、背景 在各类学科竞赛中&#xff0c;常常要求参赛者提交 Excel 或/和 PDF 格式的竞赛作品。 本赛题以某届数据分析竞赛作品的评阅为背景&#xff0c;要求参赛者根据给定的评分准则和标准答案&a…...

MYSQL表联接算法深入研究

在关系型数据库中&#xff0c;表联接是一种常见的操作&#xff0c;它使得我们可以根据不同的条件将多个表中的数据进行连接。而MySQL作为一种常用的关系型数据库&#xff0c;其表联接算法包括NLJ、BNL、BKA、BNLH等多种&#xff0c;在实际应用中选择不同的算法还需要考虑到数据…...

markdown中画图功能mermaid

mermaid Mermaid 是一种开源的可交互式的数据可视化库&#xff0c;它使用 Markdown 标记语言来生成图表和流程图。它通常用于生成网站或文档中的图表。Mermaid 不属于任何公司&#xff0c;而是一个由社区开发和维护的开源项目。 官方网站&#xff1a; https://mermaid-js.git…...

SCI论文丨机器学习与深度学习论文

目录 第一章、ChatGPT-4o使用方法与技巧 第二章、ChatGPT-4o辅助文献检索、总结与分析 第三章、ChatGPT-4o辅助学术论文选题、创新点挖掘与实验方案设计 第四章、ChatGPT-4o辅助学术论文开题与大纲生成 第五章、ChatGPT-4o辅助学术论文写作马拉松活动介绍 第六章、ChatGPT…...

linux系统编程(二)

1、fcntl #include <unistd.h> int fcntl(int fd, int cmd, ...)fcntl用于控制文件描述符&#xff0c;该系统调用有很多功能&#xff0c;功能用cmd来控制&#xff0c;fcntl后面的参数根据cmd来填充。 我们常用的cmd有&#xff1a; F_GETFL&#xff1a;获取文件状态标志…...