首页 文章 精选 留言 我的

精选列表

搜索[VPU驱动],共10000篇文章
优秀的个人博客,低调大师

图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

LLM 如火如荼地发展了大半年,各类大模型和相关框架也逐步成型,可被大家应用到业务实际中。在这个过程中,我们可能会遇到一类问题是:现有的哪些数据,如何更好地与 LLM 对接上。像是大家都在用的知识图谱,现在的图谱该如何借助大模型,发挥更大的价值呢? 在本文,我便会和大家分享下如何利用知识图谱构建更好的 In-context Learning 大语言模型应用。 此文最初以英文撰写的,而后我麻烦 ChatGPT 帮我翻译成了英文。下面是翻译的 prompt: “In this thread, you are a Chinese Tech blogger to help translate my blog in markdown from English into Chinese, the blog style is clear, fun yet professional. I will paste chapters in markdown to you and you will send back the translated and polished version.” LLM 应用的范式 作为认知智能的一大突破,LLM 已经改变了许多行业,以一种我们没有预料到的方式进行自动化、加速和启用。我们每天都会看到新的 LLN 应用被创建出来,我们仍然在探索如何利用这种魔力的新方法和用例。 将 LLM 引入流程的最典型模式之一,是要求 LLM 根据专有的/特定领域的知识理解事物。目前,我们可以向 LLM 添加两种范式以获取这些知识:微调——fine-tune 和 上下文学习—— in-context learning。 微调是指对 LLM 模型进行附加训练,以增加额外的知识;而上下文学习是在查询提示中添加一些额外的知识。 据观察,目前由于上下文学习比微调更简单,所以上下文学习比微调更受欢迎,在这篇论文中讲述了这一现象:https://arxiv.org/abs/2305.16938。 下面,我来分享 NebulaGraph 在上下文学习方法方面所做的工作。 Llama Index:数据与 LLM 之间的接口 上下文学习 上下文学习的基本思想是使用现有的 LLM(未更新)来处理特定知识数据集的特殊任务。 例如,要构建一个可以回答关于某个人的任何问题,甚至扮演一个人的数字化化身的应用程序,我们可以将上下文学习应用于一本自传书籍和 LLM。在实践中,应用程序将使用用户的问题和从书中"搜索"到的一些信息构建提示,然后查询 LLM 来获取答案。 ┌───────┐ ┌─────────────────┐ ┌─────────┐ │ │ │ Docs/Knowledge │ │ │ │ │ └─────────────────┘ │ │ │ User │─────────────────────────────────────▶ LLM │ │ │ │ │ │ │ │ │ └───────┘ └─────────┘ 在这种搜索方法中,实现从文档/知识(上述示例中的那本书)中获取与特定任务相关信息的最有效方式之一是利用嵌入(Embedding)。 嵌入(Embedding) 嵌入通常指的是将现实世界的事物映射到多维空间中的向量的方法。例如,我们可以将图像映射到一个(64 x 64)维度的空间中,如果映射足够好,两个图像之间的距离可以反映它们的相似性。 嵌入的另一个例子是 word2vec 算法,它将每个单词都映射到一个向量中。例如,如果嵌入足够好,我们可以对它们进行加法和减法操作,可能会得到以下结果: vec(apple) + vec(pie) ≈ vec("apple apie"),或者向量测量值 vec(apple) + vec(pie) - vec("apple apie") 趋近于 0: |vec(apple) + vec(pie) - vec("apple apie")| ≈ 0 类似地,"pear" 应该比 "dinosaur" 更接近 "apple":|vec(apple) - vec(pear)| < |vec(apple) - vec(dinosaur)| 有了这个基础,理论上我们可以搜索与给定问题更相关的书籍片段。基本过程如下: 将书籍分割为小片段,为每个片段创建嵌入并存储它们 当有一个问题时,计算问题的嵌入 通过计算距离找到与书籍片段最相似的前 K 个嵌入 使用问题和书籍片段构建提示 使用提示查询 LLM ┌────┬────┬────┬────┐ │ 1 │ 2 │ 3 │ 4 │ ├────┴────┴────┴────┤ │ Docs/Knowledge │ ┌───────┐ │ ... │ ┌─────────┐ │ │ ├────┬────┬────┬────┤ │ │ │ │ │ 95 │ 96 │ │ │ │ │ │ │ └────┴────┴────┴────┘ │ │ │ User │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─▶ LLM │ │ │ │ │ │ │ │ │ └───────┘ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ └─────────┘ │ ┌──────────────────────────┐ ▲ └────────┼▶│ Tell me ....., please │├───────┘ └──────────────────────────┘ │ ┌────┐ ┌────┐ │ │ 3 │ │ 96 │ │ └────┘ └────┘ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Llama Index Llama Index 是一个开源工具包,它能帮助我们以最佳实践去做 in-context learning: 它提供了各种数据加载器,以统一格式序列化文档/知识,例如 PDF、维基百科、Notion、Twitter 等等,这样我们可以无需自行处理预处理、将数据分割为片段等操作。 它还可以帮助我们创建嵌入(以及其他形式的索引),并以一行代码的方式在内存中或向量数据库中存储嵌入。 它内置了提示和其他工程实现,因此我们无需从头开始创建和研究,例如,《用 4 行代码在现有数据上创建一个聊天机器人》。 文档分割和嵌入的问题 嵌入和向量搜索在许多情况下效果良好,但在某些情况下仍存在挑战,比如:丢失全局上下文/跨节点上下文。 想象一下,当查询"请告诉我关于作者和 foo 的事情",在这本书中,假设编号为 1、3、6、19-25、30-44 和 96-99 的分段都涉及到 foo 这个主题。那么,在这种情况下,简单地搜索与书籍片段相关的前 k 个嵌入可能效果不尽人意,因为这时候只考虑与之最相关的几个片段(比如 k = 3),会丢失了许多上下文信息。 ┌────┬────┬────┬────┐ │ 1 │ 2 │ 3 │ 4 │ ├────┴────┴────┴────┤ │ Docs/Knowledge │ │ ... │ ├────┬────┬────┬────┤ │ 95 │ 96 │ │ │ └────┴────┴────┴────┘ 而解决、缓解这个问题的方法,在 Llama Index 工具的语境下,可以创建组合索引和综合索引。 其中,向量存储(VectorStore)只是其中的一部分。除此之外,我们可以定义一个摘要索引、树形索引等,以将不同类型的问题路由到不同的索引,从而避免在需要全局上下文时错失它。 然而,借助知识图谱,我们可以采取更有意思的方法: 知识图谱 知识图谱这个术语最初由谷歌在 2012 年 5 月提出,作为其增强搜索结果,向用户提供更多上下文信息的一部分实践。知识图谱旨在理解实体之间的关系,并直接提供查询的答案,而不仅仅返回相关网页的列表。 知识图谱是一种以图结构形式组织和连接信息的方式,其中节点表示实体,边表示实体之间的关系。图结构允许用户高效地存储、检索和分析数据。 它的结构如下图所示: 现在问题就来了,上面说过知识图谱能帮忙搞定文档分割和嵌入的问题。那么,知识图谱到底能怎么帮到我们呢? 嵌入和知识图谱的结合 这里的基本实现思想是,作为信息的精炼格式,知识图谱可切割的数据颗粒度比我们人工的分割的更细、更小。将知识图谱的小颗粒数据与原先人工处理的大块数据相结合,我们可以更好地搜索需要全局/跨节点上下文的查询。 下面来做个题:请看下面的图示,假设提问同 x 有关,所有数据片段中有 20 个与 x 高度相关。现在,除了获取主要上下文的前 3 个文档片段(比如编号为 1、2 和 96 的文档片段),我们还从知识图谱中对 x 进行两次跳转查询,那么完整的上下文将包括: 问题:"Tell me things about the author and x" 来自文档片段编号 1、2 和 96 的原始文档。在 Llama Index 中,它们被称为节点 1、节点 2 和节点 96。 包含 "x" 的知识图谱中的 10 个三元组,通过对 x 进行两层深度的图遍历得到: x -> y(来自节点 1) x -> a(来自节点 2) x -> m(来自节点 4) x <- b-> c(来自节点 95) x -> d(来自节点 96) n -> x(来自节点 98) x <- z <- i(来自节点 1 和节点 3) x <- z <- b(来自节点 1 和节点 95) ┌──────────────────┬──────────────────┬──────────────────┬──────────────────┐ │ .─. .─. │ .─. .─. │ .─. │ .─. .─. │ │( x )─────▶ y ) │ ( x )─────▶ a ) │ ( j ) │ ( m )◀────( x ) │ │ `▲' `─' │ `─' `─' │ `─' │ `─' `─' │ │ │ 1 │ 2 │ 3 │ │ 4 │ │ .─. │ │ .▼. │ │ │( z )◀────────────┼──────────────────┼───────────( i )─┐│ │ │ `◀────┐ │ │ `─' ││ │ ├───────┼──────────┴──────────────────┴─────────────────┼┴──────────────────┤ │ │ Docs/Knowledge │ │ │ │ ... │ │ │ │ │ │ ├───────┼──────────┬──────────────────┬─────────────────┼┬──────────────────┤ │ .─. └──────. │ .─. │ ││ .─. │ │ ( x ◀─────( b ) │ ( x ) │ └┼▶( n ) │ │ `─' `─' │ `─' │ │ `─' │ │ 95 │ │ │ 96 │ │ │ 98 │ │ .▼. │ .▼. │ │ ▼ │ │ ( c ) │ ( d ) │ │ .─. │ │ `─' │ `─' │ │ ( x ) │ └──────────────────┴──────────────────┴──────────────────┴──`─'─────────────┘ 显然,那些(可能很宝贵的)涉及到主题 x 的精炼信息来自于其他节点以及跨节点的信息,都因为我们引入知识图谱,而能够被包含在 prompt 中,用于进行上下文学习,从而克服了前面提到的问题。 Llama Index 中的知识图谱进展 最初,William F.H.将知识图谱的抽象概念引入了 Llama Index,其中知识图谱中的三元组与关键词相关联,并存储在内存中的文档中,随后Logan Markewich还增加了每个三元组的嵌入。 最近的几周中,我一直在与 Llama Index 社区合作,致力于将 "GraphStore" 存储上下文引入 Llama Index,从而引入了知识图谱的外部存储。首个知识图谱的外部存储是对接开源分布式图数据库 NebulaGraph,目前在我的努力下已经实现了。 在实现过程中,还引入了遍历图的多个跳数选项以及在前 k 个节点中收集更多关键实体的选项,用于在知识图谱中搜索以获得更多全局上下文。上面提到的这些变更还在陆续完善中。 在大模型中引入 GraphStore 后,还可以从现有的知识图谱中进行上下文学习,并与其他索引结合使用,这也非常有前景。因为知识图谱被认为具有比其他结构化数据更高的信息密度。 本文作为开篇,讲述了一些知识图谱和 LLM 的关系。在后续的文章中,将会偏向实操同大家分享具体的知识图谱和 LLM 的应用实践。 -- 谢谢你读完本文 (///▽///) 欢迎前往 GitHub 来阅读 NebulaGraph 源码,或是尝试用它解决你的业务问题 yo~ GitHub 地址:https://github.com/vesoft-inc/nebula 想要交流图技术和其他想法,请前往论坛:https://discuss.nebula-graph.com.cn/

优秀的个人博客,低调大师

【Spring注解驱动开发】使用@PropertySource加载配置文件,我只看这一篇!!

点击上方蓝色“冰河技术”,关注并选择“设为星标” 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址: https://github.com/sunshinelyz/mykit-delay PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。 写在前面 很多小伙伴都在问:冰河,你的Spring专题更新完了吗?怎么感觉像是写了一半啊?我:没有更新完呀,整个专题预计会有70多篇。那怎么更新了一半就去写别的了呢?那是因为有很多其他的小伙伴在后台留言说:急需学习一些其他的技术,所以,临时调整的。放心,Spring专题会持续更新的!这不,今天,我们就继续更新Spring专题。不出意外的话,会一直持续更新完!! 小伙伴们如果有啥疑问,可在文末点击“写留言”进行留言,我看到后会一一回复大家!! 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/spring-annotation @PropertySource注解概述 @PropertySource注解是Spring 3.1开始引入的配置类注解。通过@PropertySource注解将properties配置文件中的值存储到Spring的 Environment中,Environment接口提供方法去读取配置文件中的值,参数是properties文件中定义的key值。也可以使用@Value 注解用${}占位符注入属性。 @PropertySource注解的源代码如下所示。 packageorg.springframework.context.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Repeatable;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;importorg.springframework.core.io.support.PropertySourceFactory;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Repeatable(PropertySources.class)public@interfacePropertySource{Stringname()default"";String[]value();booleanignoreResourceNotFound()defaultfalse;Stringencoding()default"";Class<?extendsPropertySourceFactory>factory()defaultPropertySourceFactory.class;} 从@PropertySource的源码可以看出,我们可以通过@PropertySource注解指定多个properties文件,可以使用如下形式进行指定。 @PropertySource(value={"classpath:xxx.properties","classpath:yyy.properties"}) 细心的读者可以看到,在@PropertySource注解类的上面标注了如下的注解信息。 @Repeatable(PropertySources.class) 看到这里,小伙伴们是不是有种恍然大悟的感觉呢?没错,我们也可以使用@PropertySources注解来指定properties配置文件。 @PropertySources注解 首先,我们也是看下@PropertySources注解的源码,如下所示。 packageorg.springframework.context.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfacePropertySources{PropertySource[]value();} @PropertySources注解的源码比较简单,只有一个PropertySource[]数组类型的属性value,那我们如何使用@PropertySources注解指定配置文件呢?其实也很简单,就是使用如下所示的方式就可以了。 @PropertySources(value={@PropertySource(value={"classpath:xxx.properties"}),@PropertySource(value={"classpath:yyy.properties"}),}) 是不是很简单呢?接下来,我们就以一个小案例来说明@PropertySource注解的用法。 案例准备 首先,我们在工程的src/main/resources目录下创建一个配置文件person.properties文件,文件的内容如下所示。 person.nickName=zhangsan 接下来,我们在Person类中新增一个字段nickName,如下所示。 packageio.mykit.spring.plugins.register.bean;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importlombok.ToString;importorg.springframework.beans.factory.annotation.Value;importjava.io.Serializable;/***@authorbinghe*@version1.0.0*@description测试实体类*/@Data@ToString@NoArgsConstructor@AllArgsConstructorpublicclassPersonimplementsSerializable{privatestaticfinallongserialVersionUID=7387479910468805194L;@Value("binghe")privateStringname;@Value("#{20-2}")privateIntegerage;privateStringnickName;} 目前,我们并没有为Person类的nickName字段赋值,所以,此时Person类的nickName字段的值为空。我们运行下PropertyValueTest类的testPropertyValue01()方法来看下输出结果,如下所示。 org.springframework.context.annotation.internalConfigurationAnnotationProcessororg.springframework.context.annotation.internalAutowiredAnnotationProcessororg.springframework.context.annotation.internalCommonAnnotationProcessororg.springframework.context.event.internalEventListenerProcessororg.springframework.context.event.internalEventListenerFactorypropertyValueConfigperson================================Person(name=binghe,age=18,nickName=null)Processfinishedwithexitcode0 可以看出,Person类的nickName字段的值确实输出了null。 使用xml文件方式获取值 如果我们需要在xml文件中获取person.properties文件中的值,则我们首先需要在Spring的xml文件中引入context名称空间,并且使用context命名空间导入person.properties文件,之后在bean的属性字段中使用如下方式将person.properties文件中的值注入到Person类的nickName字段上。 <context:property-placeholderlocation="classpath:person.properties"/><beanid="person"class="io.mykit.spring.plugins.register.bean.Person"><propertyname="name"value="binghe"></property><propertyname="age"value="18"></property><propertyname="nickName"value="${person.nickName}"></property></bean> 整个bean.xml文件的内容如下所示。 <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/context/spring-context.xsd"><context:property-placeholderlocation="classpath:person.properties"/><beanid="person"class="io.mykit.spring.plugins.register.bean.Person"><propertyname="name"value="binghe"></property><propertyname="age"value="18"></property><propertyname="nickName"value="${person.nickName}"></property></bean></beans> 这样就可以将person.properties文件中的值注入到Person的nickName字段上。接下来,我们在PropertyValueTest类中创建testPropertyValue02()测试方法,如下所示。 @TestpublicvoidtestPropertyValue02(){ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext("classpath:beans.xml");Personperson=(Person)context.getBean("person");System.out.println(person);} 我们运行PropertyValueTest类中创建的testPropertyValue02()方法,输出的结果信息如下所示。 Person(name=binghe,age=18,nickName=zhangsan) 使用注解方式获取值 如果我们使用注解的方式该如何做呢?首先,我们需要在PropertyValueConfig配置类上添加@PropertySource注解,如下所示。 packageio.mykit.spring.plugins.register.config;importio.mykit.spring.plugins.register.bean.Person;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.PropertySource;/***@authorbinghe*@version1.0.0*@description测试属性赋值*/@PropertySource(value={"classpath:person.properties"})@ConfigurationpublicclassPropertyValueConfig{@BeanpublicPersonperson(){returnnewPerson();}} 这里使用的@PropertySource(value = {"classpath:person.properties"})就相当于xml文件中使用的<context:property-placeholder location="classpath:person.properties"/>。 接下来,我们就可以在Person类的nickName字段上使用@Value注解来获取person.properties文件中的值了,如下所示。 @Value("${person.nickName}")privateStringnickName; 配置完成后,我们再次运行PropertyValueTest类的testPropertyValue01()方法来看下输出结果,如下所示。 org.springframework.context.annotation.internalConfigurationAnnotationProcessororg.springframework.context.annotation.internalAutowiredAnnotationProcessororg.springframework.context.annotation.internalCommonAnnotationProcessororg.springframework.context.event.internalEventListenerProcessororg.springframework.context.event.internalEventListenerFactorypropertyValueConfigperson================================Person(name=binghe,age=18,nickName=zhangsan) 可以看到,此时Person类的nickName字段已经注入了“zhangsan”这个值。 使用Environment获取值 这里,我们在PropertyValueTest类中创建testPropertyValue03()方法,来使用Environment获取person.properties中的值,如下所示。 @TestpublicvoidtestPropertyValue03(){AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(PropertyValueConfig.class);Environmentenvironment=context.getEnvironment();StringnickName=environment.getProperty("person.nickName");System.out.println(nickName);} 运行PropertyValueTest类中的testPropertyValue03()方法,输出的结果信息如下所示。 zhangsan 可以看到,使用Environment确实能够获取到person.properties中的值。 重磅福利 关注「 冰河技术 」微信公众号,后台回复 “设计模式” 关键字领取《深入浅出Java 23种设计模式》PDF文档。回复“Java8”关键字领取《Java8新特性教程》PDF文档。回复“限流”关键字获取《亿级流量下的分布式限流解决方案》PDF文档,三本PDF均是由冰河原创并整理的超硬核教程,面试必备!! 好了,今天就聊到这儿吧!别忘了点个赞,给个在看和转发,让更多的人看到,一起学习,一起进步!! 写在最后 如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫! 后记: 记住:你比别人强的地方,不是你做过多少年的CRUD工作,而是你比别人掌握了更多深入的技能。不要总停留在CRUD的表面工作,理解并掌握底层原理并熟悉源码实现,并形成自己的抽象思维能力,做到灵活运用,才是你突破瓶颈,脱颖而出的重要方向! 你在刷抖音,玩游戏的时候,别人都在这里学习,成长,提升,人与人最大的差距其实就是思维。你可能不信,优秀的人,总是在一起。。 扫一扫或长按二维码 关注冰河技术微信公众号 如果你喜欢这篇文章,欢迎点赞和转发。 生活很美好,明天见(。・ω・。)ノ♡ 写留言 本文分享自微信公众号 - 冰河技术(hacker-binghe)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

LC3大会,开源人的狂欢,反哺的力量驱动技术革新

在世界杯踢得正酣时,IT人也迎来了开源盛会LinuxCon + ContainerCon + CloudOpen中国(简称LC3)大会。从去年开始,LC3大会开始进入中国,正值开源云计算的这把火,在中国技术圈烧得越来越旺,同时也引发了越来越多国际同行的密切关注。 除了经典的开源论题,此次LC3大会重点关注了AI深度学习、区块链、Serverless、微服务、自动编排等当前技术热点话题。LC3大会由Linux基金会主办,从成立之初的Linux项目发展到如今的Kubernetes、CNI、Containerd、DPDK、Xen众多优秀项目和CNCF、CF、Hyperledger、ONAP等数个子基金会。 阿里云始终坚持着与社区开源标准的兼容,如首批通过Kubernetes一致性认证、最早支持containerd 1.1、提供高性能网络Te

优秀的个人博客,低调大师

戴尔大中华区解决方案顾问鲍荣钦:技术驱动,数据改变物流

编者按: “十三五”时期是我国贸易发展的重要战略机遇期,物流产业发展迅速,智慧供应链已经成为推动流通大国向流通强国过程中的重要行动。6月2日,由上海市国有资产监督管理委员会、上海市邮政管理局、上海市商务委员会指导,上海市国有资产信息中心、上海市计算机用户协会联合主办,上海市快递行业协会、浦东电子商务行业协会协办,畅享网承办的“2017年物流行业高峰论坛”在上海正式开启。论坛以“开放创新 共建智慧供应链”为主题,参会专家和CIO共同交流新形势下物流行业的创新发展,探讨智慧供应链的应用及实践。 大数据能够为物流行业带来什么价值?能不能为企业省钱和赚钱?会上,中国戴尔有限公司中国区资深解决方案专家鲍荣钦与大家分享了技术如何帮助物流公司进行数字化的转型以及戴尔提供的适合物流行业解决方案。 以下为演讲实录,畅享网整理: 各位领导嘉宾大家下午好!我非常有幸今天能够在这里跟大家分享,戴尔如何助力物流企业和相关行业的客户做数字化的转型。 开始我简单介绍一下戴尔目前这一年的变化,中国地区戴尔已经超过了日本,成为了戴尔全球第二大的市场。戴尔的中国工厂,每天生产的设备占全球戴尔供应的设备的65%以上。目前戴尔在中国IT企业已经扎根比较深,覆盖面比较广。全国有1万2千多的门店,覆盖了两千两百多的城市。 戴尔在去年9月份的时候终于得到了中国商务部最终的批复,花了将近625亿美金收购了EMC公司,这也是在全球科技领域最大的并购案。收购完成后,我们成立了由7个子公司的组成戴尔科技集团。如今的戴尔科技集团是业界唯一的端到端解决方案提供商,在各个领域也处于领导者地位。在企业级基础架构中,戴尔全球服务器出货量排名第一,在融合基础架构、云基础架构和软件定义数据中心基础架构,戴尔排名第一,全球三个社交平台都是运行在戴尔的基础架构之上。 在客户端产品,戴尔为客户提供全球最安全的的商用笔记本。 技术如何改变物流 或者说技术怎么帮物流公司进行模式上的改变或者数字化的转型? 现在市场上经常在谈论的云技术、大数据融合技术、超融合技术。我认为在做的各位不需要去清楚了解这些具体怎么操作的,更应该考虑的是这些技术如何帮到自己的业务系统,能产生什么样的影响? 在很多场景下面,云、大数据、超融合、关键数据都可以产生很多分支的业务。传统情况下,客户并不了解这些技术本身,他发现有时候为了要实现技术,而去改造自己的业务,这是背道而驰的。我们经过探讨发现,与其被技术牵着鼻子走,不如自己准备一套完善的解决方案,根据自己目标的思想,通过新的技术引领企业的转型和发展。 打个比方,现在有很多企业有各种各样的大数据素材。如果在大数据的分析之下,跟一些其他的技术相结合,比如上面看到的HPC,做一些高清的计算,是不是可以通过深度学习的模块、人工智能的方式,将原先的数据进行智能化,将传统的业务智能化以后进行业务的改造。 适合物流行业的解决方案 戴尔根据之前客户的讨论总结了很多比较适合物流行业解决方案,其中有8个比较务实、而且协助客户创新的解决方案。接下来向大家介绍其中一部分。 软件定义的数据中心 现在的软件非常强大,可以实现很多功能,通过这种高级功能,可以降低原有的利用率,降低原有的不必要的人力投入,提高一些信息化的应用率,我们可以帮助企业加快业务的部署。 SAPHANA大数据 也是很多企业会用到的。企业经常会有财务报表,报表的数据量随着企业的发展越来越大,通过数据生成报表在传统情况下会很花时间,等待的时间会错过商机、机遇。通过SAP HANA内存计算方案,可以把传统的几天到几周的等待时间缩短到实时,这样可以更好的把握商机,抓住机会。 现代化的数据中心 我们现在在考虑,现代化的数据中心,跟混合云、软件定义数据中心相结合。一个模块化的数据中心,通过它的灵活度可以很好满足现有企业的部署要求。可以从单模块的一个机柜扩展到多模块的机柜,这种扩展方式循序渐进。如果是单模块的机柜,在传统的数据中心建设需要很大的面积,但是通过单模块的机房,不需要在意机房位置的面积和环境。在这套设备里面就可以包含了所有机房所必备的,比如像空调、UPS、尖端的定位保护,监控PDU、报警,这些都能够集中在一起。这种模块化的方式、云化的方式部署,相比较传统方式的部署有很多优势。传统方式需要专门的机房勘察、建设,整个周期需要5到10天,但是通过模块化的方式只需要1天,很方便。还有分期部署的优势,很方便的降低数据中心的KPS跟OPS。 接下来具体展开现代化数据中心。下面部分与前面讲到的模块化数据中心、融合都有结合,我重点讲一下上面部分的东西。上面部分我们会有一个混合云的平台。戴尔提供了一个比较体系的五部曲的操作,从底下做机房建设到上面如何做混合云的管理,也可以从不同的步伐介入到这个解决方案里面去。我们可以实行DevOps的协作,把开发运维的流程跟上线的流程打通。开发的同事直接在开发的系统上用定制好的代码编译软件,完了以后直接推送到后台的发送系统。接下来该看到这个版本已经发布了,或者发布完毕了,整个迭代过程非常快。再往下私有云里,更多提到云计算的服务,很多公有云上的资源实现云计算,希望实现自服务,让很多IT人员可以自己登录上去申请更多资源。如何让传统企业IT,或者服务部门转型到支撑公司运作的部门,通过计费的方式很好的做转型,可以把自服务的内容嵌入到系统里面,我们就可以把整个IT本身需要承担的成本具体化的分担到具体的项目上去。 数据库加速 数据库加速是现在所有企业业务系统中最核心的系统,也是必不可少的系统。随着业务系统并发的访问量增加,客户会越来越多,数据也会随之暴增,这个时候数据库在后台会面临很严峻的问题,撑不住了就影响前端的性能。如何解决这个问题呢? 目前戴尔就数据库加速领域,根据不同的场景定制了很多大加速、中加速、小加速。小加速是基于用户现场现有数据库的系统,他们不希望把现有的数据库系统进行大改造,所以在改造的时候我们可能通过一些LO卡的添加,把性能加速很多倍。大加速,用户希望把数据库性能达到极致,让客户体验更好。这时候我们提供一整套从端到端,完整全方位的加速方案。既可以做软件加速也可以做硬件加速,甚至可以做软硬件结合加速。戴尔有完整9个理论分析,分析按以后找到原因,然后做策略,把性能完成到极致。 8大解决方案有基于系统层面的,有应用层面的,云层面的,方方面面都很多。我们认证过的这些解决方案实施在中国已经交付过了,已经落地了,而且也经过了很多的验证,得到客户满意的答复。今天时间有限,只介绍这四种,谢谢各位! 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册