Category: Digital Industry and Frontier Technologies

  • 深度学习框架中自动微分的实现

    自动微分的实现为深度学习的框架的梯度回传的计算提供了很大的便捷,我们只需定义好算子(operator),搭建好整个深度神经网络的网络结构后,就可以通过拓扑序构建好(具体拓扑排序方法可以参考引文中的深度优先搜索方法DFS)计算图,然后就可以根据偏微分的链式法则,就可以依次反向计算节点的数值结果,参数梯度等数值了。 在不同的深度学习的框架中,神经网络反向传播的算法实现会存在着一些差异,以早期的比较有影响力的caffe举例说明,caffe的实现中没有算子,而是blob(tensor)和layer,Net三种粒度的结构,各种不同的计算方法的layer(类似于各种不同的operator,如加减乘除)中计算前向和反向的结果,layer的输入为bottom blob,输出为top blob(也有可能存在着inplace的操作)其计算流图的关系是通过Net类中的相关函数进行静态计算的(Init函数)。 深度学习框架经过技术的发展,早期的caffe已经淡出了研发者的视线,不过在当时(还没有出现tensorflow,caffe2,以及pytorch)是相当有影响力的,其中的设计思想也是比较优秀的,有兴趣的读者可以阅读某些layer的forward,backward函数(基于cpu和gpu(cublas库)的矩阵计算)的实现都可以具体阅读源码加以具体深入的理解。不过由于其python的接口支持不是特别丰富,一些特殊的层的自定义实现和框架的重编译门槛比较高,相比pytorch要繁琐很多。 现在基于pytorch的深度学习框架由于其简洁易用而广受欢迎,其网络的定义也更加自由灵活(代码定义网络结构也很方便),基于pytorch的深度学习应用框架也有很多,纷繁多样,比如openmmlab等等。 Reference

  • 交互式VR在视觉增强方面可能的应用

    人类个人的感知,认知和创造性都是有限制的,这里仅从视觉感知增强的方面来说一说元宇宙相关技术的作用。所描述的场景和应用只是一些可能的案例,实际上会有更多丰富的场景,但也有待去更好的在技术产品上落地实现,在实际中得以很好的应用。 人类在感知上存在着较大局限,比如仅从视觉上来讲,人的眼睛只能感受波长较窄的一段可见光,看不清微观世界运行的细节,也看不清大的宏观宇宙的全貌,人的视角也很有限制,不能同时看到360度周视全貌,以及遮挡视线部分的内容。感知是认知的基础,人类首先能够看得见听得着,才能不断积累对世界的认识并代代相传,智慧才能不断升级。 人类感知能力的局限可以由现在科技的发展进行拓展和增强,人们越来越会制造高级的工具来延申我们的视觉感知,听觉感知以及行动力等等。就拿VR来说,可以应用的场景很多,特别在小的微观细节和大的宏观全貌的交互式可视化上将能够大有所为。这里就简要的来说一说。 比如生物化学这些领域,一些分子结构的交互动态可视化,DNA双螺旋到底长成什么样子,一些生物医药,特别对于生物学和医学的同学,如果能够通过VR技术来可视化很多生物微观的细节结构和动态行为,那这里的学习和理解将更加的直观和深刻。 再比如大的宏观结构,数字孪生地球,太阳系和银河系等等,都是非常有教育价值的场景,通过数字地球,未来我们甚至可以随时云上游览地球的任何一个地方,我们可以通过缩放来了解地月的运行方式,太阳系的行星和卫星,以及可能的太阳系带着自己的行星卫星和星云在银河系中飞奔的场景。 还有很多的场景可以用到,如展示栩栩如生的已经灭绝的古生物,中小学语文课历史课等内容都可以制作设计精良的交互可视化内容。以后VR,AR和AI相结合的元宇宙产品,有更多的内容期待着大家发挥神奇的想象力,期待后面这些方面也能有所实践。

  • 虚实结合的生活工作空间设想

    随着元宇宙、人工智能和5G,6G区块链等技术的进步和融合,未来我们的生活工作方式将会有较大的变化,新的数字化时代科技发展日新月异,超乎我们的想象,这里就先天马行空的来说一说未来可能的情况和场景。 以IT公司为例,未来程序员编程实现工作将更多的由程序员的数字代理来完成,现实生活中的程序员可以负责来review和优化代码,以及程序的集成等工作。 家庭生活空间也类似,这里每个人可以由实体成员,实体机器人代理和虚拟代理三个角色构成,实体机器人负责在家庭物理空间完成一定的任务,如家务购物等,虚拟代理可以参加虚实融合的教学家长会,完成一些实体成员日程生活的记录如记账网购等活动。甚至我们日常活动中产生的想法和行动都可以数字化到元宇宙空间中,虚拟代理和实体在认知状态和行为上实现同步。某种意义上这样的数字虚拟代理可以实现实体个人成长经历一定程度的永久化,后代们将会更加具体的看到前人的生活工作情况,是一个活生生的家庭族谱,可以设置时间分辨率去浏览回顾,个人或伴侣也可以在年迈的时候去回忆曾经的美好时光。 综合上面两个场景及可能的更多的常见来看,未来虚拟空间将展现越来越重要的作用,虚拟空间将拥有更强大的生产力,人们的日常工作将会越来越多的由我们在虚拟空间的代理来完成,每一个组织,包括最小单位的个人,到家庭,公司,政府单位等都可以在元宇宙空间中建立虚拟代理,这些代理还可以在元宇宙空间中互联,实现更大的社交元宇宙,就像我们的物理世界中组织模式一样。也有说元宇宙就是下一代互联网,不过其组成元素将大大扩展很多,将是一个和现实世界平行发展但也有耦合和交互的虚拟世界,理想状态甚至是和物理世界同步运行着的一个镜像世界,或者加入非物理世界的人为构造和想象的部分,以及可能的多个不同特色和任务的虚拟世界,相互耦合着相互影响着推动整体世界向前运行。

  • 具身智能(Embodied AI)开源数据集Open X-Embodiment简介

    为了训练一个通用的机器人策略,Google推出了Open X-Embodiment数据集,通过在全球机器人实验室收集机械臂操作的数据集,历时大半年,一共得到了大大小小60多个来自21个组织结构34个机器人研究实验室的数据集,包含在22个机器人上采集的能够完成527种不同技能(skills)的16万个任务(160266 tasks)的上百万条数据。60个已有数据集中涉及到的机器人有单臂、双臂和四足,Franka占多数。下图为数据集的来源组织单位,可以看出诸多著名高校和研究结构都有参与其中。 可以看到除了这前面的一些动作有一定数量之外,其他的几百个动作的数量都非常少,技能数据呈现长尾分布(如下图中d所示)。 机器人大模型有两个典型代表,RT-1是高效的为机器人控制(robotic control)设计的基于transformer架构的模型,RT-2是一个大的视觉语言模型联合微调训练( co-fine-tuned)以输出机器人动作(以自然语言的表现形式,natural language tokens)。RT为Robotics Transformer的简称。RT1使用130k条机器人遥操作数据训练,展示出了其处理多种任务的能力和很强的泛化能力。但其通用性仍受限于数据集的大小。RT-1 的输入由图片序列、自然语言指令构成,输出由机械臂运动的目标位姿( Toll , pitch gaw , gripper stαtus)、基座的运动 、模式转换指令构成( The robot action is a 7-dimensional vector consisting of x, y, z, roll, pitch, yaw, and gripper opening or the rates of these quantities.)。RT-2抛弃了RT-1的设计,采用了利用网络上海量图文数据预训练出的图文模型,这些模型的规模可以最大达到55B的参数量,远远超过RT-1的35M的规模。这些图文模型被训练来回答关于图片的问题,原本的输出是文字,RT-2创造性的将机器人动作重新编码,使得编码为“文字”的机器人动作作为图文模型的输出。RT-X把提高扩展的目标放在了指令中的“动作”。 基于RT-1模型用该混合的机器人数据训练的结果模型为RT-1-X,基于RT-2模型用该混合的机器人数据训练的结果模型为RT-2-X,RT-1-X和RT-2-X比RT-1和RT-2模型性能优越了很多。得到的RT-1-X和RT-2-X模型表现出了很强的泛化能力和涌现能力(跨机器人实体学习的能力)。是以后更加通用智能的机器人的技术实现的曙光。 Open X-Embodiment数据集采用RLDS格式进行描述,RLDS为Reinforcement Learning Datasets的缩写,是一个用来存储,检索和操作序列的决策制订和执行的剧集数据(episodic data in the context of Sequential Decision Making),剧集一般记录一个完整的任务轨迹过程,比如一盘棋的下棋的步骤序列,在这里为机器人的一个任务的数据序列。如下图所示为一个episode数据的图像序列。如需了解数据集的更多的细节,可以参考引文中github里相关的代码链接。 行业内开源的好的数据集对于推动整个方向的发展起到了非常重要的作用,之前也有介绍过数据要素方面的博客短文(参考引文链接),具身机器人在将来将可以实现更多的任务,也可以在更多的应用场景中得到应用,数据集也可能会进一步扩充和丰富,以后如家务机器人,教育机器人等等也许会在不久后能够在实际生活中得到较好的应用。期待越来越多的算法和应用创新来丰富数字化场景的应用和数字化产业的发展,为社会经济提供新的增长动力,为人们的生活带来更多的便利和福祉。…

  • 云计算相关技术简介(五)-Neutron组件相关技术概念简介

    Neutron组件模块是openstack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理。本篇文章将简要介绍neturon网络组件的相关的技术的简要介绍,具体的相关技术的详细介绍后面会在实践环节安排专门的篇幅进行阐述。 一般的,OpenStack中网络实现包括vlan、gre、vxlan等模式,在OpenStack中,所有网络有关的逻辑管理均在Network节点中实现,例如DNS、DHCP以及路由等。Compute节点上只需要对所部署的虚拟机提供基本的网络功能支持,包括隔离不同租户的虚拟机和进行一些基本的安全策略管理(即security group)。安全组的对象是虚拟网卡,由L2 Agent来实现,比如neutron_openvswitch_agent 和 neutron_linuxbridge_agent,会在计算节点上通过配置 iptables 规则来限制虚拟网卡的进出访问。计算节点上运行着虚拟机。如果不启用 DVR 特性,则所有的网络相关的服务,都在网络节点上进行。即计算节点上的网络只需要实现二层转发即可。 GRE:General Routing Encapsulation,一种通过封装来实现隧道的方式。在openstack中一般是基于L3的GRE,即original pkt/GRE/IP/Ethernet(从左到右layer依次降低)。隧道协议将这些其他协议的数据包重新封装在新的包头中发送。被封装的数据包在隧道的两个端点之间通过网络进行路由,被封装数据包在网络上传递时所经历的逻辑路径称为隧道。简单来说,隧道技术是一类网络协议,是将一个数据包封装在另一个数据包中进行传输的技术;使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径。通过网络隧道技术,可以使隧道两端的网络组成一个更大的内部网络。 DVR(Distributed Virtual Router,DVR),按照 Neutron 原先的设计,所有网络服务都在网络节点上进行,这意味着大量的流量和处理,给网络节点带来了很大的压力。这些处理的核心是路由器服务。任何需要跨子网的访问都需要路由器进行路由。为了降低网络节点的负载,同时提高可扩展性,OpenStack 自 Juno 版本开始正式引入了分布式路由DVR特性(用户可以选择使用与否),来让计算节点自己来处理原先的大量东西向流量和非 SNAT 南北流量(有 floating IP 的 vm 跟外面的通信)。这样网络节点只需要处理占到一部分的 SNAT (无 floating IP 的 vm 跟外面的通信)流量,大大降低了负载和整个系统对网络节点的依赖。很自然的,FWaaS 也可以跟着放到计算节点上。DHCP 服务、VPN 服务目前仍然需要集中在网络节点上进行。 VXLAN,VXLAN(Virtual Extensible LAN)是一种用于解决数据中心内部网络限制和提高网络的灵活性与可扩展性的网络虚拟化技术。它于2011年被提出,旨在扩展和改进传统的虚拟局域网(VLAN)功能。VXLAN技术通过封装原始以太网帧(包含MAC地址、VLAN标签等)到UDP报文中来工作。这种封装允许VXLAN跨越不同的网络段和IP子网(将原始以太网帧作为应用数据用UDP协议进行封装),从而实现网络虚拟化功能。具体的关于VXLAN的详细介绍请参考引文。 VXLAN现在是比较常用的SDN的虚拟网络的实现。这里将详细介绍一下相关的实现原理细节。上面就是VXLAN系统的网络结构图,对相关组成部分做一些介绍,如TAP设备:模拟一个二层的网络设备,可以接受和发送二层网包。VETH:虚拟ethernet接口(virtual eth),通常以pair的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道。在上图中的qbr-xxx/qbr-yyy一般简称为qbr。qbr是Quantum Bridge的缩写,而OpenStack网络组件的前一个名称就是Quantum,qbr就是虚拟网桥,用来做安全组控制的。qvb:neutron veth, Linux Bridge-side。qvo:neutron veth, OVS-side。br-int是集成的网桥,实现将数据包转化为VLAN包作用;br-tun是将VLAN进一步封装成VXLAN隧道技术,而且上图左边部分的这些虚拟实现都是在计算节点内部实现的相关的网络虚拟化功能。其中下面以出报文和入报文的过程示例进行一个简要的说明。 其中上图中的计算节点和网络节点通过物理交换机相连,把vxlan的包封装成IP包进行传输。 出报文的转换过程 注:出br-tun时,VLAN变为VXLAN,并转为VNI=100。 入报文的转换过程 网络节点担负着进行网络服务的任务,包括DHCP、路由和高级网络服务等。一般包括三个网桥:br-tun、br-int…

  • 云计算相关技术简介(四)-docker和虚拟机

    上一篇文章中介绍过openstack中虚拟机镜像服务模块glance,就说到虚拟机镜像和docker镜像,当时没有具体展开,这篇文章将较为详细介绍虚拟机技术和docker容器相关技术之间的比较。不正确的地方欢迎批评指正。 首先虚拟机的概念是相对于物理机器而言的,虚拟机是依赖于物理计算机而设计实现的逻辑计算机,根据物理计算机的特性,有基于单机的虚拟机,如基于wmware虚拟机管理软件,在单台计算机上构建多个虚拟机器,从而可以方便模拟不同计算节点,如搭建大数据的模拟环境。也有基于多个甚至很多个物理机器之上构建的虚拟机管理系统,这类的虚拟机管理软件有openstack和VMware vSphere等,甚至一些大的公司会构建自己的虚拟机软件系统管理平台(可以参考引文中的介绍),一般这样基于分布式环境的虚拟机调度和管理系统成为云计算平台。 docker容器技术,容器是利用namespace将文件系统、进程、网络、设备等资源进行隔离,利用cgroup对权限、cpu资源进行限制,最终让容器之间互不影响,容器无法影响宿主机。docker容器之间属于进程之间隔离,而虚拟机之间属于系统之间的隔离。 虚拟机的镜像文件实实在在就是操作系统环境的persistent storage,docker镜像是一个“应用程序和它运行依赖环境”的封装。当镜像运行起来后即是docker容器。运行时的容器本质是操作系统下的一个进程,这些进程共享同一个宿主机OS的内核。与传统VM相比,docker是一种操作系统虚拟化技术,并不需要在镜像内安装GuestOS。docker在共享宿主机内核的基础上包装内核提供的一系列API,这些API中最重要的就是namespace和cgroup。通过namespace实现隔离,通过cgroup实现资源限制。一般管理docker镜像的服务称为docker hub,现有的也有多个开放的docker镜像源。 一般虚拟机是云计算系统中IAAS平台的关键技术,是建立在cpu硬件虚拟化和操作系统级的软件虚拟化(如KVM等)的基础之上的。而docker容器可以理解为在host操作系统之上运行的一个特殊的进程。而docker容器以及基于此之上的编排技术k8s等则是相关的PAAS平台的所依赖的技术,大数据平台如hadoop可以基于虚拟机之上直接部署,也可以基于容器环境部署。具体可以参考后两个引文链接。docker容器技术的出现,大大方便了开发部署的效率,开发环境和部署环境可以快速复制分发,不需要每个开发人员为了开发库和开发机器环境的兼容问题去浪费时间和精力,有种一劳永逸的感觉。关于docker容器相关的技术细节,如dockerfile的编写,一些CLI命令的使用如docker容器的启动等等,会在后续的相关课程中进行介绍。 References

  • 云计算专业企业实践(三)-openstack系统组件介绍

    这次的实践内容是通过网络会议进行的,昨天的实践今天补充记录一下,以备后续查阅。现在流媒体通信技术比较成熟,网络视频会议等工具使得很多物理上远距离的沟通变得方便很多,在云计算专业实践中,除了物理服务器的布置,网络拓扑结构的组织和安排以及布线等需要在现场进行实践锻炼外,其他如技能知识点的学习,相关软件系统的安装部署和维护都可以远程进行,工作不再太多的受物理距离的限制,可以节省出出行的时间来,有利于一天的生活工作安排。 言归正传,openstack是一个虚拟机平台系统,是IAAS系统中处于服务器硬件节点集合和原生操作系统之上运行的一个分布式系统,其功能用简介的一句话概括可以理解为虚机调度分配和管理系统。其中openstack系统上层实现主要是python语言,底层的开发有基于更高性能的c++语言。下面首先介绍一下openstack的几大模块。后续根据进一步的熟悉和理解再去补充或新增专门描述细节的文章,不正确的地方欢迎批评指正。 1、horizon-dashboard模块,GUI模块,理解为管理员和openstack系统进行交互的用户界面,是管理整个运行在底层(水平线下)openstack系统的维护通道,通过界面可以了解系统的运行状态等信息; 2、nova-compute模块,计算模块,也是openstack最核心和主要的模块,提供了nova-api,会涉及调用其他的模块如虚拟机镜像服务模块,存储模块,网络模块,用户认证模块等,是虚拟机调度、分配和运行管理的核心组件,也用到了cpu硬件虚拟化和linux内核中hypervisor虚拟化组件的功能,实际云计算平台运维的工作中有50%以上的问题会集中在此模块; 3、cinder-volume模块,存储模块,支持swift(openstack自带存储模块)和ceph分布式存储模块。提供cinder-api供horizon-dashboard层调用; 4、neturon-network模块,提供vpc(virtual private cloud)功能,可以通过逻辑封装实现虚拟网络的功能,vpc可以实现虚拟交换机,vxlan也是虚拟实现的局域网,可以方便不同租户和项目之间的隔离;网络模块也是很重要的模块,这部分逻辑虚拟实现的功能比较多,相关技术和概念相对也较复杂,后续会有机会再专门去记录和介绍; 5、glance-image service模块,是虚拟机镜像模块,负责存储和管理虚机镜像,通过管理多种虚机镜像,支持用户选择合适的镜像进行服务部署;在这里镜像是虚机操作系统镜像,如ubuntu系统还是windows系统的镜像文件,而容器镜像是docker服务中的运行在docker虚拟化技术上的系统环境镜像,是容器启动的系统文件。是不同的镜像概念; 6、keystore-identity service模块,为用户认证模块,提供了用户的信息,如用户设置的安全组策略,用户的身份信息等,主要用作权限认证,在其他模块中可能会调用该模块去验证权限等操作。 以上为openstack的主要的模块组件,实际的云计算环境部署的时候,一般的部署的步骤是:1、搭建云计算的物理服务器和硬件网络拓扑,如机架式服务器,三层交换机和网络布线等硬件物理结构的设计和实施;2、原生操作系统的安装,以及相关的环境设置,如hostname,ssh免密登录等;3、openstack云平台环境的安装,有基于kolla方式的较为便捷的部署方式,通过openstack kolla ansible(编排工具,偏向于支持运维服务)进行较为方便的安装部署,其中有几个种地按的配置文件需要了解,如globals.yaml,multinode.yaml等配置文件,需要对里边的配置项有比较深入的理解。 Reference

  • 云计算专业企业实践(二)-ceph存储

    今天参加云计算第二次企业实践,阳光明媚,春天来了。午餐后和一起过来的老同事在附近的公园散了会步,感受到了久违的温暖阳光,公园的树木一动不动,水平如镜,温暖而安静。 今天学习的技术主要是ceph存储,ceph存储是云计算中比较流行的存储技术,实现了分布式的大容量高可靠性和伸缩性存储功能。可以支持上千个存储节点,容量达到TB到PB级别。下面简要说说ceph的技术概要,欢迎补充和批评指正。 ceph的技术架构大体是这样的:(1)、底层是RADOS分布式存储系统,RADOS即为Reliable Autonomic Distributed Object Store,也就是可信赖的自动分布式对象存储,RADOS中的pool,PG(placement group)和OSD(object storage device)以及hash,crush等算法实现了具有数据冗余副本的分布式存储系统,如果有数据盘损坏,该系统设计的crush算法能够比较方便实现自愈。(2)librados库,支持访问底层的rados对象库,支持多种高级语言,是中间层的一个开发库,向上层提供服务。(3)最上层的开发库有radosgw,类比于公有云里边的对象存储,块存储rbd(虚拟机中申请的磁盘)和cephfs(类比于共享文件)等机制。 上层应用接口:Ceph上层应用接口包括对象存储RADOSGW、块存储RBD和文件系统存储CephFS。RADOSGW提供与Amazon S3和Swift兼容的RESTful API网关,供相应的对象存储应用开发使用;RBD提供标准的块设备接口,常用于虚拟化场景下为虚拟机创建volume。 其中虽然对上层提供了不同的存储服务,如块存储,在申请虚机时可以作为虚拟机的块磁盘使用,还有rados gateway提供了类似于基于bucket和file的两层结构的对象存储,和cephfs文件存储系统(类似于nfs和windows共享文件),但是这些不同的存储方式的底层都是基于rados的高效分布式存储的,由于在ceph中一般都是采用object这个单位进行的分片存储,分布式存储的文件读写就可能采用并行的机制,实现高吞吐量的IO读写。 细节还有很多,如要理解crush算法,理解不同的管理工具和配置文件的使用等等,还有和openstack云计算平台的集成等等,具体到后面的实践环节再补充更新。 References

  • 云计算相关技术简介(一)-虚拟化及NUMA架构

    云计算是数字化产业的硬软件基础设施,涵盖技术的方方面面,这篇文章主要从一些底层的硬件方面的技术来简要介绍一下,这些技术底层的原理可能比较复杂,我们主要了解其作用和用法,介绍也主要从我们的需求出发。 CPU虚拟化技术,CPU的虚拟化技术可以单CPU模拟多CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令。纯软件虚拟化解决方案存在很多限制。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。AMD方面也已经发布了支持AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产品。启用虚拟化只需要在物理cpu的bios中开启虚拟化,然后在vmware等系统中才可以使用虚拟化特性。 UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。为了解决这些问题,有人搞出了NUMA。NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller)。在 Node 内部,架构类似SMP,使用 IMC Bus 进行不同核心间的通信;不同的 Node 间通过QPI(Quick Path Interconnect)进行通信。Openstack 在 Juno 版本中新增 NUMA 特性,用户可以通过将 Guest 的 vCPU/Memory 绑定到 Host NUMA Node上,以此来提升 Guest 的性能。 hypervisor: 一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(virtual machine monitor)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,并且加载所有虚拟机的客户操作系统。 KVM是首个被集成到 Linux 内核的 hypervisor 解决方案,并且实现了完整的虚拟化。qemu-kvm也是常用到的具体实现技术。 References

  • 视觉生成式AI技术简介及可能的应用创新点

    最近几年生成式AI(generative AI)的技术很火,和人类的大脑类比,生成式AI类比于人类的文档撰写,绘画设计和视频制作等,好的AI技术可以服务人类,将人类从一部分的工作中解放出来,去做更有创造性和创新型的事情。这里简要阐述一下视觉生成模型技术的一些技术思路,不正确的地方欢迎批评指正。 在图像生成方面,生成式AI经历了几次技术方案的迭代,从VAE,GAN,到diffusion models,效果越来越好,而且已经在视频生成领域取得了很大的技术进步,如最近的sora模型,效果好,是最近很热门的话题,小视频的介绍也有不少。图像生成都是从一个二维的随机高斯分布的image作为输入,通过模型的计算得出最后生成的模型,生成的结果的多样性在于输入中高斯输入的随机性以及训练数据的多样性。独立高斯分布可以理解为输入中的每一个像素点的值服从高斯分布,每一个像素点可以理解为图像中对应位置特征的值,不同点的独立高斯分布作为输入说明每一次输入的对应特征不一样,从而会带来丰富多样的结果。从随机的输入(根据训练集的特性随机效果的生成)或者再加上有意义的prompt生成满足特定场景的视觉效果。 1、VAE,VAE生成式算法主要是生成一个隐空间(latent space)假设隐变量服从高斯分布,而且尽可能的接近均值为0,标准差为1的标准正态分布(可以通过KL loss进行约束)而且在VAE中,隐变量的值也是通过训练集中数据的输入通过网络计算得出的,从数据输入到隐空间的计算相当于一种编码器,然后隐空间经过解码器恢复到原始数据空间。在生成的时候可以通过随机生成器生成隐空间的数据后再decode即可; 2、GAN,一度非常火热的算法,根据高斯随机分布的输入数据或条件数据通过生成网络和判别网络间的相互博弈交替训练去动态生成。大概轮流交替训练过程如下:(1)、先训练生成式网络,生成网络的loss,以及生成的结果在判别网络中的输出为true为ground truth;(2)、然后训练判别式网络,将生成网络的结果(fake)在判别网络中的输出为false为ground truth,而真实的数据在判别网络中的数据结果为true。具体一点的说明为:在训练生成式网络阶段(判别器网络参数固定),判别器尽可能将任务生成的结果判别为真实的,并且满足生成的条件(如条件生成,如风格迁移等),而在训练判别式网络阶段(生成式网络参数固定),判别器尽可能将生成网络生成的结果判别为fake,而真实的数据结果判别为true,这样在生成网络训练过程中,生成的结果越来越和真实的接近,生成的能力越来越强,而且判别式网络训练的过程中,生成的结果和真实的结果尽可能区分开,判别式网络的能力越来越强,这样不断的在生成网络和判别网络相互不段变强博弈的过程中,最后达到判别器网络”真假不分”的状态,也就是判别器区分不了是ground truth还是生成器生成的结果。 3,diffusion models,采用迭代的去噪过程,从原始的高斯随机数据一步步去噪生成结果的图像数据,数学推导比较繁琐,可以参考引文。其中stable diffusion models在图像生成领域是一个里程碑式的结果,其首先将图像用VAE模型将其转换到隐空间,然后在压缩后的隐空间进行模型的训练,并根据transformer的kv特性将条件prompt进行(CLIP进行text encoding)融合,从而实现文生图的功能。最近的sora的原理没有看到,但感觉应该是二维图像空间的扩展,据说也是在隐空间进行的训练。具体细节以后有机会再去详细了解。 最后总结畅想一下,未来视觉生成领域的可能创新和进步:(1)、条件视觉生成,这个可以用来一致性视觉生成的实现,如现在生成一段文字描述的视频,其中的人物或场景能否提取作为条件作为后续文字的背景条件生成?如果可以实现,生成长剧本的影视场景倒也是有可能的;(2)、多模态生成,影视短视频中视频加语音混合生成,比如人说话,或者和环境交互产生的动作和语音效果;(3)、可编辑式视频生成,生成的视频可能大部分满足自己的要求,但有些内容和场景需要进一步去编辑调整,可以通过文字表达的方式,也比如基于视频的control net的约束生成实现。 References