日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

兩億多用戶,六大業(yè)務(wù)場景,知乎AI用戶模型服務(wù)性能如何優(yōu)化?

電子工程師 ? 來源:工程師李察 ? 2019-01-05 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

用戶模型簡介

知乎 AI 用戶模型服務(wù)于知乎兩億多用戶,主要為首頁、推薦、廣告、知識服務(wù)、想法、關(guān)注頁等業(yè)務(wù)場景提供數(shù)據(jù)和服務(wù),例如首頁個性化 Feed 的召回和排序、相關(guān)回答等用到的用戶長期興趣特征,問題路由、回答排序中用到的 TPR「作者創(chuàng)作權(quán)威度」,廣告定向投放用到的基礎(chǔ)屬性等。

主要功能

提供的數(shù)據(jù)和功能主要有:

用戶興趣:長期興趣、實時興趣、分類興趣、話題興趣、keyword 興趣、作者創(chuàng)作權(quán)威度等,

用戶 Embedding 表示:最近鄰用戶、人群劃分、特定用戶圈定等,

用戶社交屬性:用戶親密度、二度好友、共同好友、相似優(yōu)秀回答者等,

用戶實時屬性: LastN 行為、LastLogin 等,

用戶基礎(chǔ)屬性:用戶性別預(yù)測、年齡段計算、職業(yè)預(yù)估等。

服務(wù)架構(gòu)

整體主要分為 Streaming / 離線計算、在線服務(wù)和 HBase 多集群同步三部分組成,下面將依次進行介紹。

用戶模型服務(wù)架構(gòu)圖

Streaming / 離線計算

Streaming 計算主要涉及功能 LastRead、LastSearch、LastDisplay,實時話題/ Keyword 興趣、最后登錄時間、最后活躍的省市等。

用戶模型實時興趣計算邏輯圖

實時興趣的計算流程

相應(yīng)日志獲取。從 CardshowLog、PageshowLog、QueryLog 中抽取<用戶,contentToken,actionType >等內(nèi)容。

映射到對應(yīng)的內(nèi)容維度。對于問題、回答、文章、搜索分別獲取對應(yīng)的 Topic 和 Keyword,搜索內(nèi)容對應(yīng)的 Topic。在 Redis 中用 contentToken 置換 contentId 后,請求 ContentProfile 獲取其對應(yīng)話題和關(guān)鍵詞;對于 Query,調(diào)用 TopicMatch 服務(wù),傳遞搜索內(nèi)容給服務(wù),服務(wù)返回其對應(yīng)的 Topic;調(diào)用 Znlp 的 KeywordExtractorJar 包,傳遞搜索內(nèi)容并獲得其對應(yīng)的 Keyword 。

用戶-內(nèi)容維度匯總。根據(jù)用戶的行為,在<用戶,topic,actionType>和<用戶,keyword,actionType>層面進行 groupBy 聚合匯總后,并以 hashmap 的格式存儲到 Redis,作為計算用戶實時興趣的基礎(chǔ)數(shù)據(jù),按時間衰減系數(shù) timeDecay 進行新舊興趣的 merge 后存儲。

計算興趣。在用戶的歷史基礎(chǔ)數(shù)據(jù)上,按一定的 decay 速度進行衰減,按威爾遜置信區(qū)間計算用戶興趣 score,并以 Sortedset 的格式存儲到 Redis。

關(guān)于興趣計算,已經(jīng)優(yōu)化的地方主要是:如何快速的計算平滑參數(shù) alpha 和 beta,如何 daily_update 平滑參數(shù),以及用卡方計算置信度時,是否加入平滑參數(shù)等都會對最終的興趣分值有很大的影響,當(dāng) display 為 1 曝光數(shù)量不足的情況下,興趣 score 和 confidence 計算出現(xiàn) 的 bias 問題等。

在線服務(wù)

隨之知乎日益增加的用戶量,以及不斷豐富的業(yè)務(wù)場景和與之相對應(yīng)出現(xiàn)的調(diào)用量上升等,對線上服務(wù)的穩(wěn)定性和請求時延要求也越來越高。 舊服務(wù)本身也存在一些問題,比如:

在線服務(wù)直連 HBase,當(dāng)數(shù)據(jù)熱點的時候,造成某些 Region Server 的負載很高,P95 上升,輕者造成服務(wù)抖動,監(jiān)控圖偶發(fā)有「毛刺」現(xiàn)象,重者造成服務(wù)幾分鐘的不可用,需要平臺技術(shù)人員將 Region 從負載較高的 RegionServer 上移走。

離線任務(wù)每次計算完成后一次大批量同時寫入離線和在線集群,會加重 HBase 在線集群Region Server 的負載,增大 HBase get 請求的時延,從而影響線上服務(wù)穩(wěn)定性和 P95。

針對問題一,我們在原來的服務(wù)架構(gòu)中增加緩存機制,以此來增強服務(wù)的穩(wěn)定型、減小 Region Server 的負載。

針對問題二,修改了離線計算和多集群數(shù)據(jù)同步的方式,詳見「HBase多集群存儲機制」部分。

Cache機制具體實現(xiàn)

沒有 Cache 機制時,所有的 get 和 batchGet 方法直接請求到 HBase,具體如下圖:

用戶模型服務(wù)請求序列圖

UserProfileServiceApp 啟動服務(wù),將收到的請求交由 UserProfileServiceImpl 具體處理

UserProfileServiceImp 根據(jù)請求參數(shù),調(diào)用 GetTranslator 將 UserProfileRequest.GetRequest 轉(zhuǎn)化成 HBase 中的 Get Object(在 Map 中維護每個 requestField 對應(yīng) HBase 中的 tablename,cf,column,prefix 等信息),以格式Map[String, util.List[(AvailField, Get)]]返回。

UserProfileServiceImp 用 Future 異步向 HBase 發(fā)送 get 請求,獲取到結(jié)果返回。

增加 Cache 機制的具體方法,在上面的第二步中,增加一個 CacheMap,用來維護 get 中 AvailField 對應(yīng) Cache 中的 key,key 的組成格式為:「 tablename 縮寫| columnfamily 縮寫| columnname 縮寫| rowkey 全寫」。這里使用的 Redis 數(shù)據(jù)結(jié)構(gòu)主要有兩種,SortedSet 和 Key-Value對。服務(wù)端收到請求后先去轉(zhuǎn)化 requestField 為 Cache 中的 key,從 Cache 中獲取數(shù)據(jù)。對于沒有獲取到 requestField 的轉(zhuǎn)化成 GetObject,請求 HBase 獲取,將結(jié)果保存到 Cache 中并返回。

最終效果

用戶模型的訪問量大概為 100K QPS,每個請求轉(zhuǎn)化為多個 get 請求。 增加 Cache 前 get 請求的 P95 為30ms,增加 Cache 后降低到小于 15ms,Cache 命中率 90% 以上。

HBase 多集群存儲機制

離線任務(wù)和 Streaming 計算主要采用 Spark 計算實現(xiàn), 結(jié)果保存到 HBase 的幾種方式:

方法一:每次一條

1. 每次寫進一條,調(diào)用 API 進行存儲的代碼如下:

valhbaseConn=ConnectionFactory.createConnection(hbaseConf)valtable=hbaseConn.getTable(TableName.valueOf("word"))x.foreach(value=>{varput=newPut(Bytes.toBytes(value.toString))put.addColumn(Bytes.toBytes("f1"),Bytes.toBytes("c1"),Bytes.toBytes(value.toString))table.put(put)})

方法二:批量寫入

2. 批量寫入 HBase,使用的 API:

/***{@inheritDoc}*@throwsIOException*/@Overridepublicvoidput(finalListputs)throwsIOException{getBufferedMutator().mutate(puts);if(autoFlush){flushCommits();}}

方法三:MapReduce 的 saveAsNewAPIHadoopDataset 方式寫入

3. saveAsNewAPIHadoopDataset 是通用的保存到 Hadoop 存儲系統(tǒng)的方法,調(diào)用 org.apache.hadoop.mapreduce.RecordWriter 實現(xiàn)。org.apache.hadoop.hbase.mapreduce.TableOutputFormat.TableRecordWriter 是其在 HBase 中的實現(xiàn)類。底層通過調(diào)用 hbase.client.BufferedMutator.mutate() 方式保存。

valrdd=sc.makeRDD(Array(1)).flatMap(_=>0to1000000)rdd.map(x=>{varput=newPut(Bytes.toBytes(x.toString))put.addColumn(Bytes.toBytes("f1"),Bytes.toBytes("c1"),Bytes.toBytes(x.toString))(newImmutableBytesWritable,put)}).saveAsHadoopDataset(jobConf)/***Writesakey/valuepairintothetable.*@throwsIOExceptionWhenwritingfails.*/@Overridepublicvoidwrite(KEYkey,Mutationvalue)throwsIOException{if(!(valueinstanceofPut)&&!(valueinstanceofDelete)){thrownewIOException("PassaDeleteoraPut");}mutator.mutate(value);}

方法四:BulkLoad 方式

4. BulkLoad 方式,創(chuàng)建 HFiles,調(diào)用 LoadIncrementalHFiles 作業(yè)將它們移到 HBase 表中。

首先需要根據(jù)表名 getRegionLocator 得到 RegionLocator,根據(jù) RegionLocator 得到 partition,因為在 HFile 中是有序的所以,需要調(diào)用 rdd.repartitionAndSortWithinPartitions(partitioner) 將 rdd 重新排序。

HFileOutputFormat2.configureIncrementalLoad(job,table, regionLocator) 進行任務(wù)增量Load 到具體表的配置 實現(xiàn)并執(zhí)行映射( 并減少) 作業(yè),使用 HFileOutputFormat2 輸出格式將有序的放置或者 KeyValue 對象寫入HFile文件。Reduce階段通過調(diào)用 HFileOutputFormat2.configureIncrementalLoad 配置在場景后面。執(zhí)行LoadIncrementalHFiles 作業(yè)將 HFile 文件移動到系統(tǒng)文件。

staticvoidconfigureIncrementalLoad(Jobjob,Tabletable,RegionLocatorregionLocator,Class>cls)throwsIOException{Configurationconf=job.getConfiguration();job.setOutputKeyClass(ImmutableBytesWritable.class);job.setOutputValueClass(KeyValue.class);job.setOutputFormatClass(cls);//Basedontheconfiguredmapoutputclass,setthecorrectreducertoproperly//sorttheincomingvalues.if(KeyValue.class.equals(job.getMapOutputValueClass())){job.setReducerClass(KeyValueSortReducer.class);}elseif(Put.class.equals(job.getMapOutputValueClass())){job.setReducerClass(PutSortReducer.class);}elseif(Text.class.equals(job.getMapOutputValueClass())){job.setReducerClass(TextSortReducer.class);}else{LOG.warn("Unknownmapoutputvaluetype:"+job.getMapOutputValueClass());}conf.setStrings("io.serializations",conf.get("io.serializations"),MutationSerialization.class.getName(),ResultSerialization.class.getName(),KeyValueSerialization.class.getName());configurePartitioner(job,startKeys);//SetcompressionalgorithmsbasedoncolumnfamiliesconfigureCompression(table,conf);configureBloomType(table,conf);configureBlockSize(table,conf);configureDataBlockEncoding(table,conf);TableMapReduceUtil.addDependencyJars(job);TableMapReduceUtil.initCredentials(job);LOG.info("Incrementaltable"+table.getName()+"outputconfigured.");}publicstaticvoidconfigureIncrementalLoad(Jobjob,Tabletable,RegionLocatorregionLocator)throwsIOException{configureIncrementalLoad(job,table,regionLocator,HFileOutputFormat2.class);}valhFileLoader=newLoadIncrementalHFiles(conf)hFileLoader.doBulkLoad(hFilePath,newHTable(conf,table.getName))

將 HFile 文件 Bulk Load 到已存在的表中。 由于 HBase 的 BulkLoad 方式是繞過了 Write to WAL,Write to MemStore 及 Flush to disk 的過程,所以并不能通過 WAL 來進行一些復(fù)制數(shù)據(jù)的操作。 由于 Bulkload 方式還是對集群 RegionServer 造成很高的負載,最終采用方案三,下面是兩個集群進行數(shù)據(jù)同步。

存儲同步機制

技術(shù)選型 HBase 常見的 Replication 方法有 SnapShot、CopyTable/Export、BulkLoad、Replication、應(yīng)用層并發(fā)讀寫等。 應(yīng)用層并發(fā)讀寫 優(yōu)點:應(yīng)用層可以自由靈活控制對 HBase寫入速度,打開或關(guān)閉兩個集群間的同步,打開或關(guān)閉兩個集群間具體到表或者具體到列簇的同步,對 HBase 集群性能的影響最小,缺點是增加了應(yīng)用層的維護成本。 初期沒有更好的集群數(shù)據(jù)同步方式的時候,用戶模型和內(nèi)容模型自己負責(zé)兩集群間的數(shù)據(jù)同步工作。

用戶模型存儲多機房同步架構(gòu)圖

具體實現(xiàn)細節(jié)

第一步:定義用于在 Kafka 的 Producer 和 Consumer 中流轉(zhuǎn)的統(tǒng)一數(shù)據(jù) Protobuf 格式

messageColumnValue{requiredbytesqualifier=1;......}messagePutMessage{requiredstringtablename=1;......}

第二步:發(fā)送需要同步的數(shù)據(jù)到 Kafka,(如果有必要,需要對數(shù)據(jù)做相應(yīng)的格式處理),這里對數(shù)據(jù)的處理,有兩種方式。 第一種:如果程序中有統(tǒng)一的存儲到 HBase 的工具(另一個項目是使用自定義的 HBaseHandler,業(yè)務(wù)層面只生成 tableName,rowKey,columnFamily,column 等值,由 HBaseHandler 統(tǒng)一構(gòu)建成 Put 對象,并保存 HBase 中),這種方式在業(yè)務(wù)層面改動較小,理論上可以直接用原來的格式發(fā)給 Kafka,但是如果 HBaseHandler 處理的格式和 PutMessage 格式有不符的地方,做下適配即可。

/***tableName:hbasetablename*rdd:RDD[(rowkey,family,column,value)]*/defconvert(tableName:String,rdd:RDD):RDD={rdd.map{case(rowKey:String,family:String,column:String,value:Array[Byte])=>valmessage=KafkaMessages.newBuilder()valcolumnValue=ColumnValue.newBuilder()columnValue.set......(rowKey,message.build().toByteArray)}}

第二種:程序在 RDD 中直接構(gòu)建 HBase 的 Put 對象,調(diào)用 PairRDD 的 saveAsNewAPIHadoopDataset 方法保存到 HBase 中。此種情況,為了兼容已有的代碼,做到代碼和業(yè)務(wù)邏輯的改動最小,發(fā)送到 Kafka 時,需要將 Put 對象轉(zhuǎn)換為上面定義的 PutMessage Protobuf 格式,然后發(fā)送給 Kafka。

/***tableName:hbasetablenamne*rdd:RDD[(rowKey,put)]*/defconvert(tableName:String,familyNames:Array[String],rdd:RDD):RDD={rdd.map{case(_,put:Put)=>valmessage=PutMessage.newBuilder()for(familyName<-?familyNames){??????if(put.getFamilyMap().get(Bytes.toBytes(familyName))!=null){??????val?keyValueList?=?put.getFamilyMap()????????.asInstanceOf[java.util.ArrayList[KeyValue]].asScala????????for(?keyvalue?<-?keyValueList){??????????message.setRowkey(ByteString.copyFrom(keyvalue.getRow))????????......????????}????????message.setTablename(tableName)??????}????}????(null,?message.build().toByteArray)?}}

第三步:發(fā)送到 Kafka,不同的表發(fā)送到不同的 Topic,對每個 Topic 的消費做監(jiān)控。

/***發(fā)送rdd中的內(nèi)容到brokers的指定topic中*tableName:hbasetablenamne*rdd:RDD[(rowKey,put)]*/defsend[T](brokers:String,rdd:RDD[(String,T)],topic:String)(implicitcTag:ClassTag[T]):Unit={rdd.foreachPartition(partitionOfRecords=>{valproducer=getProducer[T](brokers)partitionOfRecords.map(r=>newProducerRecord[String,T](topic,r._1,r._2)).foreach(m=>producer.send(m))producer.close()})}

第四步:另啟動 Streaming Consumer 或者服務(wù)消費 Kafka 中內(nèi)容,將 putMessage 的 Protobuf 格式轉(zhuǎn)成 HBase 的 put 對象,同時寫入到在線 HBase 集群中。 Streaming 消費Kafka ,不同的表發(fā)送到不同的 Topic,對每個 Topic 的消費做監(jiān)控。

valtoHBaseTagsTopic=validKafkaStreamTagsTopic.map{record=>valtableName_r=record.getTablename()valput=newPut(record.getRowkey.toByteArray)for(cv<-?record.getColumnsList)?{??????????put.addColumn(record.getFamily.toByteArray)??????????......????????}????????if(put.isEmpty){??????????(new?ImmutableBytesWritable(),?null)????????}else{??????????(new?ImmutableBytesWritable(),?put)????????}????}.filter(_._2!=null)????if(!isClean)?{??????toHbaseTagsTopic.foreachRDD?{?rdd?=>rdd.saveAsNewAPIHadoopDataset(AccessUtils.createOutputTableConfiguration(constants.Constants.NAMESPACE+":"+constants.Constants.TAGS_TOPIC_TABLE_NAME))}}

如下為另一種啟動服務(wù)消費 Kafka 的方式。

valconsumer=newKafkaConsumer[String,Array[Byte]](probs)consumer.subscribe(topics)valrecords=consumer.poll(100)for(p<-?records.partitions)?{???val?recordsOfPartition?=?records.records(p)???recordsOfPartition.foreach?{?r?=>Try(KafkaMessages.parseFrom(r.value()))match{caseSuccess(record)=>valtableName=record.getTableNameif(validateTables.contains(tableName)){valmessageType=record.getType......try{valcolumns=record.getColumnsList.map(c=>(c.getColumn,c.getValue.toByteArray)).toArrayHBaseHandler.write(tableName)......}catch{caseex:Throwable=>LOG.error("writehbasefail")HaloClient.increment(s"content_write_hbase_fail")}}else{LOG.error(s"table$tableNameisvalid")}}}//updateoffsetvallastOffset=recordsOfPartition.get(recordsOfPartition.size-1).offset()consumer.commitSync(java.util.Collections.singletonMap(p,newOffsetAndMetadata(lastOffset+1)))}

結(jié)語

最后,目前采用的由應(yīng)用控制和管理在線離線集群的同步機制,在隨著平臺多機房項目的推動下,平臺將推出 HBase 的統(tǒng)一同步機制 HRP (HBase Replication Proxy),屆時業(yè)務(wù)部門可以將更多的時間和精力集中在模型優(yōu)化層面。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2481

    瀏覽量

    67061
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    41315

    瀏覽量

    302695
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3831

    瀏覽量

    52287

原文標題:兩億多用戶,六大業(yè)務(wù)場景,知乎AI用戶模型服務(wù)性能如何優(yōu)化?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    AI Ceph 分布式存儲教程資料大模型學(xué)習(xí)資料2026

    。在面向 C 端用戶的推理場景中,向量數(shù)據(jù)庫與模型權(quán)重的加載對存儲系統(tǒng)提出了新的挑戰(zhàn)。 實戰(zhàn)中的 AI 存儲需要支持高并發(fā)的向量檢索請求,這要求存儲底座具備極高的隨機讀寫能力。同時,為
    發(fā)表于 05-01 17:35

    HM博學(xué)谷狂野AI模型第四期

    如何減少 GPU 顯存碎片,提高吞吐量。通過對推理引擎源碼的調(diào)試與優(yōu)化,開發(fā)者將學(xué)會如何在不犧牲模型效果的前提下,榨干硬件性能,實現(xiàn)毫秒級的低延遲響應(yīng),這是將 AI 技術(shù)轉(zhuǎn)化為高并發(fā)商
    發(fā)表于 05-01 17:30

    黑馬-Java+AI新版V16零基礎(chǔ)就業(yè)班百度云網(wǎng)盤下載+Java+AI全棧開發(fā)工程師

    AI 能力有條典型路徑。初級做法是獨立部署 AI 模型服務(wù)(Python 推理端),Java 業(yè)務(wù)
    發(fā)表于 05-01 11:29

    [完結(jié)15章]Java轉(zhuǎn) AI高薪領(lǐng)域必備-從0到1打通生產(chǎn)級AI Agent開發(fā)

    拒絕原地踏步:Java工程師AI轉(zhuǎn)型的底層技術(shù)破局之道 在軟件工程范式被大語言模型(LLM)徹底顛覆的今天,傳統(tǒng)的“Java CRUD boy”正面臨著前所未有的生存危機。當(dāng)業(yè)務(wù)邏輯的生成可以被
    發(fā)表于 04-30 13:46

    后摩智能與次網(wǎng)聯(lián)發(fā)布家庭場景專屬AI超級助理龍蝦密盒

    4月22日,后摩智能與次網(wǎng)聯(lián)聯(lián)合發(fā)布了家庭場景專屬 AI 超級助理 ——龍蝦密盒。它通過本地模型+本地智能體+Harness工程,讓用戶
    的頭像 發(fā)表于 04-24 16:08 ?380次閱讀

    九天菜菜大模型agent智能體開發(fā)實戰(zhàn)2026一月班

    地擴展了其能力邊界。 大模型 Agent 的應(yīng)用場景廣泛得超乎想象,正深刻改變著各個行業(yè)的運行模式。在客戶服務(wù)領(lǐng)域,智能客服 Agent 能夠 24/7 全天候響應(yīng)客戶咨詢,通過分析用戶
    發(fā)表于 04-15 16:04

    【瑞薩AI挑戰(zhàn)賽】家庭AI相框

    ,而在于建立一個穩(wěn)定的顯示抽象層。 在家庭 AI 相框場景中,顯示刷新是整個用戶體驗的出口。將其獨立封裝以后,后續(xù)無論更換 UI 表現(xiàn)方式、增加局部區(qū)域渲染,還是加入動畫特效,都不需要重新改寫上層
    發(fā)表于 03-13 21:44

    工業(yè) AI Agent 為什么能真正落地工廠?研華六大場景實戰(zhàn)經(jīng)驗分享

    從經(jīng)驗傳承到?jīng)Q策優(yōu)化,從設(shè)備維護到供應(yīng)鏈協(xié)同,研華iFactory.AI Agent的六大落地案例充分證明,工業(yè)AI Agent并非懸浮的技術(shù)概念,而是能深度適配制造業(yè)生產(chǎn)經(jīng)營全鏈路、
    的頭像 發(fā)表于 03-12 16:58 ?434次閱讀

    如何評估工業(yè)掃碼器的“好用”程度?六大指標解析

    在智能制造、物流分揀、產(chǎn)線追溯等場景中,工業(yè)掃碼器是數(shù)據(jù)采集的核心設(shè)備。很多用戶選購時只看價格與外觀,卻忽略了決定長期穩(wěn)定性與效率的關(guān)鍵指標。真正好用的工業(yè)掃描器,必須兼顧速度、精度、耐用性與兼容性
    的頭像 發(fā)表于 03-04 13:43 ?205次閱讀
    如何評估工業(yè)掃碼器的“好用”程度?<b class='flag-5'>六大</b>指標解析

    模型 ai coding 比較

    bug場景(抽樣9題) 覆蓋Bug類型:語法錯誤、邏輯錯誤、性能優(yōu)化三類 核心指標:Bug修復(fù)通過率 評分邏輯:成功修復(fù)得10分,修復(fù)失敗/引入新問題得0分 實測結(jié)果:DeepSeek 9/9(100
    發(fā)表于 02-19 13:43

    利用拼多多用戶API進行粉絲數(shù)據(jù)分析,有效提升用戶粘性

    這些API進行粉絲數(shù)據(jù)分析,并基于分析結(jié)果制定增強用戶粘性的策略。 一、 拼多多用戶API概覽 拼多多開放平臺提供了豐富的API接口,涵蓋商品、交易、用戶、物流等多個維度。對于粉絲數(shù)據(jù)分析,以下幾個API尤為關(guān)鍵: 粉絲明細查詢
    的頭像 發(fā)表于 12-30 10:38 ?388次閱讀
    利用拼多<b class='flag-5'>多用戶</b>API進行粉絲數(shù)據(jù)分析,有效提升<b class='flag-5'>用戶</b>粘性

    【深圳】嵌入式AI實戰(zhàn):半天上手,人形檢測模型部署+優(yōu)化全流程

    你是否在項目中遇到這些痛點:AI模型太大,無法高效部署到資源受限的嵌入式設(shè)備?模型優(yōu)化后,內(nèi)存和算力平衡難把握?想快速將AI應(yīng)用到智能攝像頭
    的頭像 發(fā)表于 12-16 18:31 ?76次閱讀
    【深圳】嵌入式<b class='flag-5'>AI</b>實戰(zhàn):半天上手,人形檢測<b class='flag-5'>模型</b>部署+<b class='flag-5'>優(yōu)化</b>全流程

    聲入選2025中國AI模型產(chǎn)業(yè)創(chuàng)新服務(wù)商TOP20榜單

    榮譽,云聲(股票代碼:09678.HK)憑借自主研發(fā)的山海大模型在技術(shù)創(chuàng)新、產(chǎn)業(yè)落地與生態(tài)構(gòu)建方面的卓越表現(xiàn),成功入選 "2025 中國 AI模型產(chǎn)業(yè)創(chuàng)新
    的頭像 發(fā)表于 12-08 18:04 ?1917次閱讀

    多用戶全雙工通信:為什么MIMO系統(tǒng)蓬勃發(fā)展?

    收音機如何同時發(fā)送和接收?我們將研究這一復(fù)雜的現(xiàn)象,您將掌握其要點。我們將探討多用戶全雙工通信。我們還將重點介紹主要挑戰(zhàn)并演示MIMO解決方案。最后,我們將介紹其應(yīng)用和優(yōu)勢。
    的頭像 發(fā)表于 11-13 12:01 ?2145次閱讀
    <b class='flag-5'>多用戶</b>全雙工通信:為什么MIMO系統(tǒng)蓬勃發(fā)展?

    開源“智能預(yù)渲染框架” 幾行代碼實現(xiàn)鴻蒙應(yīng)用頁面“秒開”

    近日,在Gitee平臺開源了其自研的鴻蒙“智能預(yù)渲染框架”,并將該框架的Har包上架到OpenHarmony三方庫中心倉。該框架在鴻蒙平臺首創(chuàng)“智能預(yù)渲染”技術(shù),旨在破解應(yīng)用復(fù)雜頁面加載緩慢
    的頭像 發(fā)表于 08-29 14:32 ?729次閱讀
    <b class='flag-5'>知</b><b class='flag-5'>乎</b>開源“智能預(yù)渲染框架” 幾行代碼實現(xiàn)鴻蒙應(yīng)用頁面“秒開”
    屏南县| 河津市| 平武县| 武强县| 庐江县| 宁河县| 乌恰县| 沁阳市| 闸北区| 玛纳斯县| 麟游县| 宜黄县| 旺苍县| 兴城市| 巨鹿县| 沾益县| 文昌市| 福贡县| 深水埗区| 永昌县| 塘沽区| 朔州市| 永州市| 宜黄县| 临汾市| 行唐县| 万年县| 泽州县| 邵阳市| 怀宁县| 香港 | 高台县| 德江县| 定陶县| 松潘县| 大洼县| 武清区| 玉溪市| 鄂州市| 佳木斯市| 烟台市|