【UE4】虚幻引擎运行流程

前言

  • 当前版本:4.26.2

  • 本文原创

  • 说明:有些名词保持英文可能更容易理解

  • 目录

    • 游戏流程总览

    • 各个平台启动引擎的入口函数

    • 引擎入口函数 GuardedMain()

    • EnginePreInit 引擎预初始化

    • EngineInit 引擎初始化

    • EngineLoop 引擎主循环

    • EngineExit 引擎退出


游戏流程总览

  • 解释启用引擎和运行游戏的过程。

  • 此处说明两种主要路径:编辑器路径、standalone 路径。

  • 事件的一般顺序为初始化引擎、创建并初始化 GameInstance、加载关卡,最后开始游戏。然而在部分被调用函数的准确排序和函数被调用的位置方面,standalone 模式和编辑器模式之间存在差异。以下流程图展示两个平行运行的路径,它们在游戏开始之前汇聚。


各个平台启动引擎的入口函数

  • 代码路径:Engine\Source\Runtime\Launch\Private\

  • 作为入口函数,然后进入引擎的入口函数GuardedMain。如下图所示


引擎入口函数 GuardedMain()

  • 代码路径:Runtime/Launch/Private/Launch.cpp

  • 执行引擎四大阶段的流程:EnginePreInit 、EngineInit 、EngineLoop、EngineExit 。执行流程图如下所示


EnginePreInit 引擎预初始化

实际上调用 FEngineLoop::PreInit ,再调用 PreInitPreStartupScreen 和 PreInitPostStartupScreen ,从而实现许多初始化和核心模块相关的事情

PreInitPreStartupScreen 里的执行流程

  • 先进行各种初始化,如解析command参数、trace、stat(性能分析工具)、FModuleManager、IFileManager、FPlatformFileManager、各种路径等

  • 加载CoreUObject模块,启动FTaskGraphInterface

  • 通过LoadPreInitModules()

    • 加载 Engine、Renderer、AnimGraphRuntime 模块

    • 通过 FPlatformApplicationMisc::LoadPreInitModules()加载 D3D12RHI、D3D11RHI、OpenGLDrv等模块(根据所在平台)

    • 加载 SlateRHIRenderer模块(非服务器下)

    • 加载 Landscape、RenderCore 模块

    • 加载 TextureCompressor、AudioEditor、AnimationModifiers 模块

  • 通过 FEngineLoop::AppInit() 进行

    • 本地化文本
    • Init logging to disk
    • init config system
      • 通过 FConfigCacheIni::LoadGlobalIniFile 加载Engine、Game、Input 配置文件
      • 其他配置文件还有:Editor、EditorPerProjectUserSettings、EditorSettings、EditorKeyBindings、EditorLayout、Lightmass、Scalability、Hardware、DeviceProfiles、GameUserSettings等
    • Load "asap" plugin modules,为项目和插件加载类型为 EarliestPossible 的模块
    • 检查项目和插件模块数据,是否需要编译
    • 为项目和插件加载类型为 PostConfigInit 的模块
    • 初始化头显 PreInitHMDDevice();
    • 打印初始化日志
    • 初始化其他系统 FCoreDelegates::OnInit.Broadcast();
  • 设置游戏主线程

  • 线程池初始化(如果支持多线程)

  • 异步IO系统初始化(如果支持多线程)

  • 系统设置system settings和 cvar 初始化,cvar从 ini 文件获取,含渲染参数、分辨率、窗口模式等

  • Scalability系统初始化 InitScalabilitySystem()

  • 渲染线程 UseRenderThread()

  • 平台特定的初始化,如 FPlatformMisc::PlatformInit() 、FPlatformApplicationMisc::Init() 、FPlatformMemory::Init()

  • IPlatformFeaturesModule::Get()

  • 物理引擎初始化 InitGamePhys()

  • 引擎本地化初始化 InitEngineTextLocalization()

  • 开启音频线程 UseAudioThread()

  • 启动界面显示 FPlatformSplash::Show();

  • 平台应用程序创建 FSlateApplication::Create();服务器模式下EKeys::Initialize()、FCoreStyle::ResetToDefault();

  • RHI 初始化 RHIInit()

  • RenderUtils初始化 RenderUtilsInit()

  • FShaderCodeLibrary::InitForRuntime()

  • FShaderPipelineCache::Initialize()

  • Shader hash cache: InitializeShaderHashCache()

  • GetRendererModule

  • InitializeShaderTypes

  • CompileGlobalShaderMap

  • CreateMoviePlayer

  • etc

PreInitPostStartupScreen 里的执行流程

  • 播放启动动画 GetMoviePlayer()->SetupLoadingScreenFromIni()
  • 加载PreEarlyLoadingScreen类型的项目模块
    • 通过 FPreLoadScreenManager::Get()->Initialize() 调用 UGameEngine::CreateGameWindow(); 创建窗口
  • Pak 文件获取和挂载
  • Config 文件获取和参数读取
  • SlateRenderer 初始化
  • 加载 AssetRegistry 模块
  • UObject classes 注册和初始化
  • PIEPreviewDeviceProfileSelector
  • InitDefaultMaterials
  • Initialize the texture streaming system
  • 加载核心启动模块 LoadStartupCoreModules,包括
    • Core、Networking、Messaging
    • MRMesh、UnrealEd、EditorStyle、LandscapeEditorUtilities
    • SlateCore、Slate、SlateReflector、UMG
    • MessageLog、CollisionAnalyzer、FunctionalTesting
    • BehaviorTreeEditor、GameplayTasksEditor、StringTableEditor、VREditor、IntroTutorials、Blutility
    • Overlay、MediaAssets、ClothingSystemRuntimeNv、ClothingSystemEditor、PacketHandler、NetworkReplayStreaming
  • 通过LoadStartupModules 加载PreDefault、Default、PostDefault类型的模块
  • 加载 PreLoadingScreen 类型的模块
  • 为项目和插件加载 PostEngineInit 类型的模块
  • Online模块
  • etc

EngineInit 引擎初始化

执行GEngineLoop.Init() 。如果事编辑器会执行 EditorInit() ,本质上事执行 GEngineLoop.Init() 后再进行Editor 的一些资源加载

GEngineLoop.Init()

分析主要以Game非编辑器模式为主

  • 非编辑器模式:GEngine = NewObject<UEngine>(GetTransientPackage(), EngineClass);
    编辑器模式:GEngine = GEditor = GUnrealEd = NewObject<UUnrealEdEngine>(GetTransientPackage(), EngineClass);
  • GEngine->Init()
    • UGameEngine::Init() 非编辑器模式
      • UEngine::Init()
        • Subsystems 初始化 EngineSubsystemCollection.Initialize(this);
        • 头显设备初始化 InitializeHMDDevice();
        • 眼动追踪设备初始化 InitializeEyeTrackingDevice();
        • FSlateSoundDevice
        • 加载引擎类 LoadObject<UClass>(UEngine::StaticClass()->GetOuter()...
        • Engine.ini LoadConfig();
        • 初始化 Object 引用 InitializeObjectReferences();
        • 为编辑器 CreateNewWorldContext()
        • InitializeAudioDeviceManager();
        • networking 相关的一些东西
        • Initialise buffer visualization system data GetBufferVisualizationData().Initialize();
        • FEngineAnalytics::Initialize();
        • 加载引擎 runtime modules:ImageWriteQueue、StreamingPauseRendering、MovieScene、MovieSceneTracks、LevelSequence
        • Finish asset manager loading AssetManager->FinishInitialLoading();
        • RecordHMDAnalytics();
      • GetGameUserSettings()->LoadSettings();
        GetGameUserSettings()->ApplyNonResolutionSettings();
      • 创建 game instance
        GameInstance = NewObject<UGameInstance>(this, GameInstanceClass);
        GameInstance->InitializeStandalone(); —— CreateNewWorldContext
      • GameInstance->Init();
        • OnlineSession = NewObject<UOnlineSession>(this, SpawnClass);
          OnlineSession->RegisterOnlineDelegates();
        • SubsystemCollection.Initialize(this);
      • 初始化 viewport client
  • 加载 PostEngineInit 类型的模块
  • GEngine->Start()
    • UGameEngine::Start() 非编辑器模式
      • GameInstance->StartGameInstance();
      • const UGameMapsSettings* GameMapsSettings = GetDefault<UGameMapsSettings>();
      • const FString& DefaultMap = GameMapsSettings->GetGameDefaultMap();
      • Engine->Browse() 服务器相关
      • UEngine->LoadMap
        • 做一些清理工作,Unload 当前world、显示loading screen、清理 networking等
        • LoadPackage() ,加载level
        • 设置new world、CurrentWorld
          • WorldContext.SetCurrentWorld(NewWorld);
          • WorldContext.World()->WorldType = WorldContext.WorldType;
        • WorldContext.World()->InitWorld();
          • InitializeSubsystems()
          • FWorldDelegates::OnPreWorldInitialization.Broadcast(this, IVS);
          • AWorldSettings* WorldSettings = GetWorldSettings();
          • CreatePhysicsScene(WorldSettings);
          • CreateAISystem();
          • SetupParameterCollectionInstances();
          • Levels.Add( PersistentLevel );
          • 场景物理特性的一些设置,如重力、碰撞
        • 一些网络相关如 NetDriver、listen 等
        • WorldContext.World()->SetGameMode();
        • GShaderCompilingManager->ProcessAsyncResults()
        • WorldContext.World()->CreateAISystem();
        • WorldContext.World()->InitializeActorsForPlay();
        • FNavigationSystem::AddNavigationSystemToWorld()
        • SpawnPlayActor()
        • WorldContext.World()->BeginPlay();
          • GameMode->StartPlay();
            • GameState->HandleBeginPlay();
              • GetWorldSettings()->NotifyBeginPlay();
                为每个Actor调用BeginPlay(), FActorIterator It(World); It->DispatchBeginPlay(bFromLevelLoad);
              • GetWorldSettings()->NotifyMatchStarted();
          • GetAISystem()->StartPlay();
          • PhysicsScene->OnWorldBeginPlay();
        • WorldContext.World()->bWorldWasLoadedThisTick = true;
        • WorldContext.OwningGameInstance->LoadComplete();
  • WaitForEngineLoadingScreenToFinish()
  • WaitForMovieToFinish()
  • 加载模块: Media、AutomationWorker、AutomationController、ProfilerClient 、SequenceRecorder、SequenceRecorderSections
  • 线程心跳包 FThreadHeartBeat::Get().Start();
  • 外部分析器
  • etc

EditorInit()

调用GEngineLoop.Init() 后执行

  • 一些命令行、通知、消息、日志、ui等注册
  • 加载关卡 startup map
  • Process global shader results before we try to render anything
  • InitEngineAnalytics
  • etc

EngineLoop 引擎主循环

执行 FEngineLoop::Tick()

  • TickRenderingTickables();
    Make sure something is ticking the rendering tickables in -onethread mode to avoid leaks/bugs.
  • ActiveProfiler->FrameSync();
    外部分析器帧同步
  • FCoreDelegates::OnBeginFrame.Broadcast();
  • GLog->FlushThreadedLogs();
    刷新线程日志
  • FlushRenderingCommands()
    渲染命令更新
  • Scene->UpdateAllPrimitiveSceneInfos()
  • BeginFrameRenderThread()
    beginning of RHI frame
  • Scene->StartFrame();
  • FlushPendingDeleteRHIResources_RenderThread();
    渲染线程里一些需要帧处理的任务
  • 一些 stats 相关的事情
  • GEngine->Tick()
    main game engine tick (world, game objects, etc.)
    • log 更新
    • CleanupGameViewport();
    • 更新 subsystems
    • FEngineAnalytics、FStudioAnalytics 的 tick() 更新
    • Context.World()->Tick()
    • USkyLightComponent::UpdateSkyCaptureContents(Context.World());
      UReflectionCaptureComponent::UpdateReflectionCaptureContents(Context.World());
    • ULocalPlayer 处理
    • LevelStreaming 处理
    • FTickableGameObject::TickObjects()
    • MediaModule->TickPostEngine();
    • GameViewport->Tick(DeltaSeconds);
    • RedrawViewports();
      Render everything.
    • IStreamingManager、GameAudioDeviceManager 更新
    • 渲染线程命令相关更新 GRenderingRealtimeClock、GRenderTargetPool、FRDGBuilder、ICustomResourcePool
  • GShaderCompilingManager->ProcessAsyncResults(true, false);
  • GDistanceFieldAsyncQueue->ProcessAsyncTasks();
  • MediaModule->TickPreSlate();
    tick media framework
  • slate 的 tick 和 task
  • ReplicatedProperties 属性同步
  • FTaskGraphInterface 一些并行任务的处理
  • RHITick()
  • 帧计数、帧间隔
  • Objects 下一帧回收比标记
  • FrameEndSync 帧结束同步事件
  • EndFrameRenderThread()
  • FCoreDelegates::OnEndFrame.Broadcast();

EngineExit 引擎退出

  • 执行 GEngineLoop.Exit() ,主要是关闭和释放引擎的各个模块,具体可看源码

  • 最后调用 FEngineLoop::AppExit(); 退出应用

  • 源码

    
    void FEngineLoop::Exit()
    {STAT_ADD_CUSTOMMESSAGE_NAME( STAT_NamedMarker, TEXT( "EngineLoop.Exit" ) );TRACE_BOOKMARK(TEXT("EngineLoop.Exit"));GIsRunning	= 0;GLogConsole	= nullptr;IInstallBundleManager::InstallBundleCompleteDelegate.RemoveAll(this);// shutdown visual logger and flush all data
    #if ENABLE_VISUAL_LOGFVisualLogger::Get().Shutdown();
    #endif// Make sure we're not in the middle of loading something.{bool bFlushOnExit = true;if (GConfig){FBoolConfigValueHelper FlushStreamingOnExitHelper(TEXT("/Script/Engine.StreamingSettings"), TEXT("s.FlushStreamingOnExit"), GEngineIni);bFlushOnExit = FlushStreamingOnExitHelper;			}if (bFlushOnExit){FlushAsyncLoading();}else{CancelAsyncLoading();}}// Block till all outstanding resource streaming requests are fulfilled.if (!IStreamingManager::HasShutdown()){UTexture2D::CancelPendingTextureStreaming();IStreamingManager::Get().BlockTillAllRequestsFinished();}#if WITH_ENGINE// shut down messagingdelete EngineService;EngineService = nullptr;if (SessionService.IsValid()){SessionService->Stop();SessionService.Reset();}if (GDistanceFieldAsyncQueue){GDistanceFieldAsyncQueue->Shutdown();delete GDistanceFieldAsyncQueue;}
    #endif // WITH_ENGINEif ( GEngine != nullptr ){GEngine->ReleaseAudioDeviceManager();}if ( GEngine != nullptr ){GEngine->PreExit();}FAudioDeviceManager::Shutdown();// close all windowsFSlateApplication::Shutdown();#if !UE_SERVERif ( FEngineFontServices::IsInitialized() ){FEngineFontServices::Destroy();}
    #endif#if WITH_EDITOR// These module must be shut down first because other modules may try to access them during shutdown.// Accessing these modules at shutdown causes instability since the object system will have been shut down and these modules uses uobjects internally.FModuleManager::Get().UnloadModule("AssetTools", true);#endif // WITH_EDITORFModuleManager::Get().UnloadModule("WorldBrowser", true);FModuleManager::Get().UnloadModule("AssetRegistry", true);#if !PLATFORM_ANDROID || PLATFORM_LUMIN 	// AppPreExit doesn't work on AndroidAppPreExit();TermGamePhys();ParticleVertexFactoryPool_FreePool();
    #else// AppPreExit() stops malloc profiler, do it here insteadMALLOC_PROFILER( GMalloc->Exec(nullptr, TEXT("MPROF STOP"), *GLog);	);
    #endif // !ANDROID// Stop the rendering thread.StopRenderingThread();// Disable the PSO cacheFShaderPipelineCache::Shutdown();// Close shader code map, if anyFShaderCodeLibrary::Shutdown();#if !PLATFORM_ANDROID || PLATFORM_LUMIN // UnloadModules doesn't work on Android
    #if WITH_ENGINE// Save the hot reload stateIHotReloadInterface* HotReload = IHotReloadInterface::GetPtr();if(HotReload != nullptr){HotReload->SaveConfig();}
    #endif// Unload all modules.  Note that this doesn't actually unload the module DLLs (that happens at// process exit by the OS), but it does call ShutdownModule() on all loaded modules in the reverse// order they were loaded in, so that systems can unregister and perform general clean up.FModuleManager::Get().UnloadModulesAtShutdown();
    #endif // !ANDROIDIStreamingManager::Shutdown();// Tear down the RHI.RHIExitAndStopRHIThread();DestroyMoviePlayer();// Move earlier?
    #if STATSFThreadStats::StopThread();
    #endifFTaskGraphInterface::Shutdown();FPlatformMisc::ShutdownTaggedStorage();TRACE_CPUPROFILER_SHUTDOWN();
    }
    

参考

  • 本文原创地址 【UE4】虚幻引擎运行流程 - 砥才人 - 博客园
  • 游戏流程总览
  • \UE_4.26\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp
  • \UE_4.26\Engine\Source\Runtime\Launch\Private\Launch.cpp
  • \UE_4.26\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp
  • \UE_4.26\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp
  • \UE_4.26\Engine\Source\Runtime\Engine\Private\GameEngine.cpp
  • \UE_4.26\Engine\Source\Editor\UnrealEd\Private\UnrealEdGlobals.cpp
  • \UE_4.26\Engine\Source\Runtime\Engine\Private\GameEngine.cpp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17321.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【虚幻引擎】UE4/UE5插件

一、插件分类 插件分为七大类 Blank&#xff1a;空白插件&#xff0c;可以从头开始自己定义想要的插件风格和内容&#xff0c;用此模板创建的插件不会有注册或者菜单输入。BlueprintLibrary&#xff1a;创建一个含有蓝图函数库的插件&#xff0c;此模板函数都是静态全局函数&…

虚幻引擎5 C++游戏开发教程

虚幻引擎5 C游戏开发教程 与 Epic Games 合作创建。从基础开始学习 C&#xff0c;同时在 Unreal 中制作您的前 5 个视频游戏 课程英文名&#xff1a;Unreal Engine 5 C Developer Learn C & Make Video Games 此视频教程共5.5小时&#xff0c;中英双语字幕&#xff0c;画…

【虚幻引擎】带你了解UE4

行业前景 越来越多的开发者&#xff0c;开发商投入到UE4中&#xff0c;简单来说就是使用UE4的人越来越多&#xff0c;许多独立游戏&#xff0c;大型的游戏&#xff0c;大公司例如“腾讯&#xff0c;网易”都在使用UE4来开发&#xff0c;加上UE4对开发者来说使用完全免费&#…

【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)

B站教学链接&#xff1a;https://space.bilibili.com/449549424?spm_id_from333.1007.0.0 一、简介 PostProcessVolume&#xff08;后期处理盒子&#xff09;&#xff1a;UE4非常强大的一个后期处理&#xff0c;可以调节画面的色彩&#xff0c;相机的景深&#xff0c;视频的输…

芒格-“永远不要有受害者心态”

我们应该以什么样的心态去对待我们的生活&#xff1f; 我不是受害者&#xff0c;我是幸存者。(ps :芒格深处利益之中&#xff0c;手握财富&#xff0c;应该见到过很多阴暗的人性。 他 可能也有魔鬼的一面)受害者的感觉&#xff1a;我认为这是一种反其道而行之的人类思考方式&…

巴菲特+查理芒格+投资理论+经典语录+给韭菜的启示

巴菲特查理芒格投资理论经典语录给韭菜的启示 巴菲特&#xff1a; 一个老年人在零售店里发现老婆丢了&#xff0c;恰好遇到一个年轻人也在找自己的另一半&#xff0c;老人问&#xff1a;你妻子长什么样&#xff1f;年轻人答&#xff1a;“她可真是个金发美人啊&#xff0c;身材…

git多账号切换

参考文档&#xff1a; https://blog.csdn.net/lqlqlq007/article/details/80613272 https://blog.csdn.net/qq_36602939/article/details/79794686 1.ssh-keygen -t rsa -C "你的邮箱" 回车&#xff0c;查看rsa目录&#xff0c;先进入该目录&#xff0c;将里面已…

git 用户的切换

需求场景: 某天已入职了 发现电脑上已经存在一个git的账号 这时候你需要登录你的 也就是账号切换 再比如 你的git换号了 养了个小的git号 或是从新建号了 但是电脑还存在老的号怎么办 就是需要账号的切换 目的就是登上我的账号 拉取我的私有仓库 第一步 准备 查看当前的git用配…

Git切换账号

用了新的电脑需要切换git到自己的账户 winR 输入 CMD 后运行以下命令 查看用户名&#xff1a; git config user.name查看用户邮箱&#xff1a; git config user.email修改用户名和邮箱&#xff0c;user.name/email后面千万记得加空格 git config --global user.name "…

拥抱生产力变革!GPT4接入Office,动嘴就能Excel到PPT!

梦晨 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一觉醒来&#xff0c;工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office&#xff0c;这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话&#xff1a;今天&#xff0c;进入人机交互的新时代…

零代码编程:用ChatGPT合并多个表格中的内容到一个excel中

电脑有几百个excel表格&#xff1a; 表格里面表头是一样的&#xff0c;但是数据不一样 现在&#xff0c;想把每个表格中的内容合并到一张表中&#xff0c;然后进行数据处理分析&#xff0c;该怎么办呢&#xff1f; 用ChatGPTPython&#xff0c;很快就可以搞定。在ChatGPT中选中…

巴比特 | 元宇宙每日必读:美版权局判定用AI工具生成的图片不受版权保护,官方解释:AI生成具有不可预测性,但并非一刀切...

摘要&#xff1a;据GameLook报道&#xff0c;一名图书作者Kristina Kashtanova此前为其创作的漫画书《Zarya of the Dawn》向美国版权局提起注册&#xff0c;书中使用了部分由Midjourney创作的插图。版权局此前曾接受了这一注册&#xff0c;但在近日却宣布撤销这项授权。该机构…

虚拟邮箱怎么设置方法_商务邮箱一般用什么邮箱正式?VIP邮箱名怎么设置好?...

不管你处在什么身份&#xff0c;邮件都是对外沟通的重要途径之一&#xff0c;虽然你可能很早就接触了电子邮件&#xff0c;用过QQ邮箱、TOM邮箱等&#xff0c;但学生时代用到的真的也不多&#xff0c;很多时候用的也不讲究。不过&#xff0c;你一旦转变角色到职场&#xff0c;邮…

PHPMailer 发送163网易企业邮箱和个人邮箱, 163邮箱可能无法发送gmail邮箱,可使用qq邮箱解决问题

第一步&#xff1a;注册邮箱&#xff0c;获取客户端授权码 &#xff08;个人邮箱步骤类似&#xff09; 企业邮箱设置&#xff1a;客户端设置->开启客户端授权密码->生成授权密码->保存授权密码 第二步&#xff1a; 上代码 composer require phpmailer/phpmailer /…

mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统

postfixdovecotSASLmysqlapacheextmailextman实现基于虚拟用户的虚拟域邮件系统 声明&#xff1a;省略了前面的基础配置包括安装MYSQL&#xff0c;postfix等&#xff0c;这里用的Apache&#xff0c;MYSQL是rpm的&#xff0c;postfix&#xff0c;courier-authlib是编译安装的&am…

基于虚拟用户的邮件系统配置

基于虚拟用户的邮件系统配置 实验说明&#xff1a; 操作系统&#xff1a;redhat5.8_x64bit 由postfix sasl courier-authlib MySQL(实现了虚拟用户、虚拟域) dovecot Webmail {extmail(extmain)} 组成的虚拟用户。 需要准备以下软件包&#xff1a; postfix-2.9.6.tar.gz co…

效果达OpenAI同规模模型96%,发布即开源!国内团队新发大模型,CEO上阵写代码...

明敏 发自 凹非寺量子位 | 公众号 QbitAI 国内自研大模型迎来新面孔&#xff0c;而且发布即开源&#xff01; 最新消息&#xff0c;多模态大语言模型TigerBot正式亮相&#xff0c;包含70亿参数和1800亿参数两个版本&#xff0c;均对外开源。 由该模型支持的对话AI同步上线。 写…

深聊丨第四范式陈雨强:如何用AI大模型打开万亿规模传统软件市场?

“GPT大模型到底能不能用&#xff1f;用在哪里&#xff1f;” 这是目前中国大型企业一把手最关心的问题之一。AI大模型也被媒体称为“一把手”工程。 大型企业会非常认真地考虑大模型的应用。最近个把月&#xff0c;大型企业客户对大模型的热烈反应让第四范式首席科学家陈雨强…

ChatGPT解释器详细教程|Bard上手指南|【2023-0716】【第六期】

点击加入->【智子纪元-AIGC】技术交流群 一、大咖观点&#xff1a; 《人民日报》&#xff1a;大模型的竞争&#xff0c;是国家科技战略的竞争WAIC 2023 | 张俊林&#xff1a;大语言模型带来的交互方式变革 三、大模型实用教程&#xff1a; 获星1.9k&#xff0c;LLM微调神…

百度AI模型“文心一言”新鲜体验

今天收到通知可以体验百度的AI模型“文心一言”&#xff0c;等了一个多月迫不及待的去体验了一把&#xff0c;以下是体验的相关记录。 1、简单介绍 通过文心一言官网链接https://yiyan.baidu.com/进入&#xff0c;看到如下界面&#xff1a; 在文心一言的自我介绍中&#xff0c…