Category: ICT-Information and Communication Technology

  • AIGC体验2-midjourney使用配置对生成的图片进行约束和限制

    上篇短文主要向大家介绍了midjourney的基本使用,在文生图的时候,有时作者期望有更多的控制条件,比如生成图片的大小和横竖比,生成图片的风格等。 首先可以通过命令/settings进行相关版本,以及模式的设置,输出结果为如下图示,具体关于这些模式的含义可以参考引文,这里不做赘述。 下面主要介绍一个使用一些约束和控制的示例 输出的结果如下图所示 点击“U4”后显示结果为: 加上图片风格和长宽比之后的示例如下: 点击“U4”后显示结果为: 后面将继续介绍相关使用的一些技能点。欢迎读者反馈意见和建议。 Reference

  • AIGC体验1-midjourney的初步使用

    midjourney在图片生成方向上有较高的质量,这篇博客简要记录一下其初步的使用方法。欢迎读者给出意见和建议,以及补充相关的说明。 注册后(注册过程忽略),可以建立自己的频道,方法如下几个图示。 然后就可以在对应的服务器里用相关命令生成图片了,这里举个示例,假设提示词为“Bright forest, little bunny Lily in front of home, sunlight shining on the grass”,则生成后的效果如下图所示: 具体后面更多的使用经验将在后续的体验过程中进一步加以记录。 References

  • 八段锦视频分享

    中华传统文化源远流长,中医,中国传统儒释道哲学思想还有中国武术。 今天分享一段八段锦,感觉挺好的,全身都能够锻炼得到,中国武术刚柔相济,是强身健体的很好的“保健操”。视频分享见参考引文。 最近深度学习和大模型相关技术又有新进展,1为Alapha Fold3,2为GPT-4o(“o”代表“omni”,全方位,全部的意思)。后面打算学习一下大模型相关的技术原理,并撰写相关的技术系列文章,为大模型相关基础技术普及出一点力,为国产大模型的技术突破提供几米阳光和几滴雨露。欢迎读者提供相关素材和意见建议。 Reference

  • P2P网络技术简要介绍

    P2P网络是一种网络技术,有很多应用场景都可以用得到,特别是当前流行的区块链技术中P2P技术将作为主要核心的技术支撑,这里先简要对P2P技术做一下相关说明。如有不正确或补充的地方欢迎读者联系指出。 P2P网络中每一台机器即可以用来做客户端,也可以用来做服务器,其中的任何两个节点不需要服务器就可以直接进行通信从而共享资源交换信息。P2P网络是去中心化的,因此也意味着没有一个中央的授权节点来控制和管理资源。 P2P网络可以有多种应用存在形式,这里几个较有影响力的P2P应用,如用于文件分享的BitTorrent, 区块链网络应用比特币(bitcoin等),去中心化的计算标准Matrix,P2P网络技术还可以用于物联网平台。这些系统虽然也都有一些挑战和平衡综合考虑,但是都是在这些应用场景下要优于传统的客户端服务器的网络模式。 libp2p是一个比较健壮的面向P2P应用的开发库,用其开发P2P的应用有如下的几个优势:1、模块化,libp2p基于组件构建,可以面向不同的应用场景去组合不同的组件去构建应用;2、可扩展的网络协议配置,libp2p支持多种传输协议; 3、提供了多种语言实现的网络发现,数据存储和检索模式的代码,方便不同的编程习惯的程序员去构建;4,支持NAT穿越,NAT穿越,以实现不同内网的机器通信,关于NAT Traversal的原理,可以参考引文7;更多的优势可以参考引文8中的说明文字。 这篇短文主要介绍了P2P技术的应用,关键的技术,以及支持P2P应用开发库libp2p。P2P网络技术可以在云平台中进行部署,如Chainmaker就可以在云平台中进行部署。后续有机会将向大家详细介绍具体技术开发的应用细节。 References

  • 区块链技术简介

    区块链技术是当前较为重要且可以在生产环境中使用的关键信息技术之一,为可信存储和计算提供了技术保障,这里对区块链技术做一下简要的介绍,欢迎读者批评指正和补充。后续将介绍更多的相关技术和应用的内容。 区块链是一个基于点对点(peer-to-peer network,一种计算机网络技术)的记账系统,允许节点之间直接进行交易而不需要中心授权节点的介入。点对点网络是一个完全的去中心化的。为了满足去中心化的要求,每一个节点都需要一个记账的拷贝。拷贝可以是一个完整的拷贝,或者对于在网络上能够正常工作和保持连接的一个最小拷贝。 为了保证交易的一致性,一致性的方法如 Proof-of-Work, Proof-of-Stake被采用。在高级的密码学算法的辅助下,每一个交易都是安全的。 区块链的用处挺多,可以用在医疗卫生,供应链金融、碳交易、食品追溯等一系列关乎国计民生的重大领域。这里列举两个具体的例子:1、比如医疗卫生部门可以将病人的诊疗数据如检查结果药方等存放到区块链上,当然这些数据也可以贡献给医疗卫生部门做为数据提供。当然也可以解决假药问题,同时帮助病人和制药公司;2、食品追溯,包括食品的种子,生长过程管理数据(施肥撒药等,温度等天气数据,土壤等水土数据),以及保鲜物流,储存条件等信息。碳交易即把二氧化碳排放权作为一种商品,从而形成了二氧化碳排放权的交易,简称碳交易,碳交易有利于减少二氧化碳的排放,有利于环境保护和重构。 区块链技术所用到的底层信息技术有P2P网络,加密算法等,ChainMaker是由几个知名的大公司合作研发的区块链开源底层软件平台,具体介绍可以参考引文链接。区块链技术本身是一种分布式系统,可以和云平台相结合进行生产环境中部署,如引文7中就有基于公有云平台的区块链产品。 References

  • 动态规划较为简单的两个示例

    动态规划是编程算法里边经常会用到的一种解决问题的思路,这里向大家介绍两个相对比较简单的示例。 示例1:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径? 示例2:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 其中,第1题中可以将路径数目用二维数组path[m-1][n-1]来表示,path[i][j]就表示为从[0][0]位置起始开始走到[i][j]位置可能的路径。具体的实现方法和代码注释请参考链接。data-structures-algorithms/dp/unique-paths.cpp at main · kindlytree/data-structures-algorithms (github.com) 第2题,假设需要拼接的字符串的长度为s,则可以用一个can_concat[s+1]的数组来标记每一个从开始到index的位置是否可以有字典的单词标记出来。具体代码可以参考链接:data-structures-algorithms/dp/word-break.cpp at main · kindlytree/data-structures-algorithms (github.com)

  • Policy Gradient算法原理简介-强化学习技术系列3

    前面的相关文章,介绍了基于价值函数的强化学习算法(MDP和Q-Learning),在强化学习中,除了基于值函数的方法,还有一支非常经典的方法,那就是基于策略(policy-based)的方法。这篇文章将向大家介绍相关的算法思想,不正确或需要修正的地方欢迎大家批评指正。 在前面介绍的Q-Learning算法中,会采用一定的随机策略去选择action(epsilon greedy),一开始会让Agent更偏向于探索Explore,并不是哪一个Action带来的Value最大就执行该Action,选择Action时具有一定的随机性,目的是为了覆盖更多的Action,尝试每一种可能性。等训练很多轮以后各种State下的各种Action基本尝试完以后,我们这时候会大幅降低探索的比例,尽量让Agent更偏向于利用Exploit,哪一个Action返回的Value最大,就选择哪一个Action。 在策略梯度中,Agent一般称为Actor,策略pi通常用一个神经网络来表示,一般神经网络的输出为动作的概率(如softmax)。智能体会自动的探索不同的状态和trajectory(通过随机采样的机制进行实现。如一个policy在某种状态下输出action1的概率为60%,输出action2的概率为40%,则智能体自然而然会更多采样到action1,但也会常采样到action2)。policy gradient还有”No more perceptual aliasing”和”Effective in high-dimensional action spaces“这样的优势, 从初始状态出发,到任务的结束,被称为一个完整的episode(剧集)。这样,一个有T个时刻的eposide,Actor不断与环境交互,形成如下的序列τ: 具体的公式推导可以参考引文1,最后的梯度求解公式如下: 关于其公式的推导可以参考引文1,这里就不做赘述。需要说明和强调的是 对代码有几处说明一下:1、loss为负值,求最小,即为正值最大化,2,采用了Mento Carlo采样的思想,每次训练数据基于一个episode,从开始状态直至完成done;3、当前的某个时刻的R为从当前到最后状态r的一个折扣和,具体可以参考链接7中的实现。 实验中用到了GYM,强化学习算法工具包,可以提供强化学习算法的模拟环境,从而为测试和验证强化学习算法提供了方便。 References

  • 新时期的数字化工程应用技术教育教学新需求

    今天有幸受邀参加华为和合作伙伴举行的产教融合教育方面的研讨活动,记录一下相关的产业和教育相关的信息以备后需。 随着harmony os及相关的一系列的自主信息化技术的发展及逐渐普及,相关工程技术的教育教学也需要同步的跟进,这里据我了解的情况和背景做一点说明,如有需要补充的地方,请大家联系我补充更新。 一、鸿蒙生态开发,鸿蒙os的应用范围逐渐增多,从手机,平板到各种物联设备(如美的等智能家电),还有一些To B的专业设备如高铁,机场等的嵌入式物联网设备,都部署了鸿蒙系统,鸿蒙系统通过soft bus实现了跨设备的数据共享(不同设备感觉可以成为相互的外围设备一样),众多的android上的应用要移植到鸿蒙系统上来,就需要大量的相关app开发人才,这起码在近几年都是一个显性的应用开发人才需求,应用本科和高职的技术技能人才是比较适合这个方向的; 二、人工智能,人工智能的技术发展也很快,但是除了门槛比较高的人工智能新算法设计发明外,还有一类就是人工智能应用工程师,这类开发主要在利用人工智能的技术去搭建具体的场景应用,包括怎么去做prompt enginerring。怎么利用人工智能已有的sdk和开发套件搭建机械狗,小车,机械臂等具体的场景应用,怎么利用大模型商城代码等等这类也是应用技术型人才所适合的工作方向; 三、云原生技术,很多公司的数据平台和业务都会部署在云平台,这些公司只需关注自己的业务,而不用太专注计算设备平台的物理环境和基础软件的部署和配置。包括IaaS基础设施,PaaS如各种实验平台,大数据平台等; 四、低代码开发,低代码开发以后也会成为应用开发的主要形式,据了解大约在2025年会有70%的应用以低代码的形式开发出来,低代码开发到时候可能也是人人都可以学习的开发技术,通过拖拽和一些简单的操作就可以人人开发出自己的应用来,这方面了解的不多,以后有机会再多关注一下; 还有更多的自主技术,如操作系统,数据库,软硬件协同开发(物联网IOT,AIOT等),以及AI等方方面面需要进一步的推广和普及,关于工程应用开发的大量需求,培养这方面的工程师也是当前较为紧迫的,怎么和企业合作高效培养和对接工作需求,怎么培养同学的实践能力并且达到举一反三,自主学习新技术的能力和方法,也是职业和应用技术教育需要去讨论,总结并将好的思路,实践加以推广从而达到更好的应用工程师工程素养培养的目标。

  • gitlab服务部署

    gitlab是在软件开发过程管理中比较有影响力的开源产品,其基于ruby等实现,而现在一般的部署基本上也是基于docker镜像,因此只需拉取编译好的docker镜像环境,然后采用正确的启动脚本启动,配置一些属性项,就可以部署gitlab服务了。 gitlab服务可以提供几个有代表性的功能:1、代码仓库管理,可以按group,subgroup来组织project,有master,maintainer,developer,reporter等角色,方便比较大的平台和组织中不同小组和个人的仓库访问范围和权限管理。2、管理issue,milestone等,将issue和代码的review以及提交等想结合,管理项目进度,可视化项目完成项和待完成项,以便更合理的管理项目进度;3、支持和其他Devops工具和服务集成,如jekins等,后续如有机会也将进一步学习实践并给与介绍。 下面介绍一下部署步骤,希望能对有关读者有用,如有问题,欢迎大家反馈更正。 下面是启动的脚本示例供参考: 进入docker容器,编辑/etc/gitlab/gitlab.rb文件,然后更新如下的配置项 然后在docker容器里执行如下的两个命令启动服务。 这里将gitlab容器内部的nginx服务关闭,可以通过宿主机上的nginx的反向代理服务(proxy_pass)进行访问。如在宿主机的/etc/nginx/conf.d目录下,建立gitlab.conf文件,里边的配置方式示例如下: 其中上述的ssl_certificate 和ssl_certificate_key 需要在去购买SSL证书,这样就可以启动https协议服务了。然后在宿主机上重新加载配置文件,通过命令nginx -s reload就可以更新nginx服务配置,进而可以访问gitlab服务了。

  • Q-learning算法基本原理-强化学习技术系列2

    在之前的关于马尔可夫决策过程的相关文章中,价值函数一般是某一状态下后续执行行为序列(特定策略)所获得的价值期望。价值函数可以是状态价值函数或动作价值函数,状态价值函数通常用V(s)来表示,而动作价值函数一般用Q(s,a)来表示,其含义为在特定状态下采取动作a来表示后续的价值期望。其表示更加灵活(因为只有状态的价值函数是针对特定策略的,而Q函数多了a这个维度表达能力就更强了),在许多强化学习算法中,特别是基于动作的方法(如Q-learning和Deep Q-Networks),Q函数是中心概念。 下面是Q-learning算法的基本思路解释: Q-learning的Q值更新规则通常使用了贝尔曼方程的近似形式,即将当前状态的Q值更新为当前奖励加上未来最大Q值的折扣后的值。这样可以不断地迭代更新Q值,逐步逼近最优的Q函数,从而学习到最优的策略。Q-learning的算法流程伪代码如下图所示。 对上述公式的解释如下: 一般情况下,可以设置为LMS loss:其中error为下面的表达式。 其中,在实际训练中,为了保持训练网络的稳定性,在训练过程中用到了两个网络,具体的过程可以参考引文3。 Q-learning的深度学习版本为DQN,原理基本差不多,不过Q函数不再以表格来表示,而是用神经网络的结构来表示,这样可以建模状态数很多的情况。 References