- 博客(29)
- 资源 (10)
- 收藏
- 关注
原创 性能 - cpu 绑定
搜索性能提升什么是CPU亲和性如何将CPU亲和性应用到程序中?thread 线程绑定CPU方法绑定常用函数taskset命令
2021-12-09 08:25:43 2992
原创 Faiss多线程性能问题
faiss 性能,OpenMP 环境变量,矩阵运算库blas, cblas, openblas, atlas, lapack, mk
2021-12-08 07:57:31 1589
原创 操作系统-linux-内存-缓存
目录Buffer I/O 和 Direct I/O文件占用内存详解缓存相关参数优化Buffer I/O 和 Direct I/O文件占用内存详解缓存相关参数优化
2021-11-24 20:07:23 3797
原创 hadoop---MR(mapreduce)--常见错误
硬件问题 hdfs的硬件或者文件系统引起(inode满了、磁盘故障、盘符不可见、文件系统故障等) 内存问题 hadoop---MR(mapreduce)--内存设置_狂奔的工程师的博客-CSDN博客 各种限制
2021-11-23 09:51:12 955
原创 hadoop---MR(mapreduce)--内存设置
非java程序(c++、shell程序)在MR内存设置上,和java程序有很大差异,如果按照java程序的方式设置,很容易采坑,具体如下:MR中各个内存情况 因为在yarn container这种模式下,map/reduce task是运行在Container之中的,所以上面提到的mapreduce.map(reduce).memory.mb大小都大于mapreduce.map(reduce).java.opts值的大小。mapreduce.{map|reduce}.java.opts能够通过Xm
2021-11-23 09:46:39 1633
原创 java开发工具 - idea - 常用功能
调试step over(f8): 执行一行step into(f7): 执行一样,如果有函数进入函数step out(shift+f8): 跳出当前函数Force step into: 调试时能进入任何方法Drop frame:将返回到当前方法的调用处重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法。参考:https://www.cnblogs.com/bowu/p/40.
2021-09-01 06:58:24 3280
原创 url相关工具 - url转码工具
中文url转码工具 http://tools.jb51.net/punycode/index.php?url转码工具 https://tool.chinaz.com/tools/urlencode.aspx
2021-09-01 06:09:21 873
原创 分布式建库(索引)优化
1、把过滤器内置到hbase底层,只有通过过滤的数据才进入上面的流程,如果有大量的数据被过滤掉,能减少大量的io(我们能节约10几倍,性能提升了10几倍)。2、充分使用上下行带宽,提升数据之间的同步数据(索引在多个机房创建,创建完成之后,机房之前相互同步)。3、使用p2p同步模式,提升数据同步速度。...
2021-07-13 19:12:39 138 1
原创 hadoop dfs 减少空间存储,降低存储成本
做kv引擎,考虑是否做raid及raid几的问题,这个blog感觉总结的挺好,https://blog.csdn.net/yangyijun1990/article/details/106738525
2021-07-13 19:05:26 278
原创 搜索引擎 - 索引大小优化
优化索引大小,主要有倒排、词表、词向量、正排等几个方向,类似词表可以使用lucence中压缩率更高的词典树(共前缀、共后缀),还可以考虑停用词、词频过滤等,词向量主要是标红用,可以采用实时计算的方式去掉词向量,节省存储。正倒排的优化方向更多一些,类似压缩、connect、编码等。...
2021-07-13 09:15:58 100
原创 hnws 和ivfpq详解
向量搜索简介 ØFaiss: 索引库 - 库ØMilvus 服务引擎 – 工程,实现了一些自己的算法。ØNSG – 阿里,基于已建好的knn模型做优化,减掉一些临近点。ØScann: google,一枝独秀。ØAnnoy: 树模型ØHNSW: 紧密图ØVearch: 京东服务引擎 – 基于faiss,实现了工程化。Ø 注:性能和效果对比:http://ann-benchmarks.com/Faiss常见概念Ø评价指标:效果(召回率)、性能...
2021-07-01 08:03:51 2761
原创 合并有序链表
inline void iter_next(node* &pn){ pn = pn->next;}void merge_order_list(node* phead1, node* phead2, node* &phead){ if(NULL == phead1) { phead = phead2; return;} if(NULL == phead2) { phead = phead1; return;} node *pthead, *pmin; .
2021-07-01 07:46:17 69
原创 同义词 - 搜索引擎
同义词分类:索引同义词和搜索同义词。索引同义词和搜索同义词的关系:时间和空间互换,任何词都可以放在搜索同义词中也可以放在索引同义词中,
2021-06-10 09:33:28 1038
原创 搜索分段并行查询思考
架构没有最好,只有最合适,架构和技术、成本、需求、紧迫度都有关系,所以不同时期可能需要不同的架构,追求不同需要的架构也会有差异,所以可以参考别人的实现方式,但是不能生搬硬套,要根据自己的实际情况,考虑如何实现更适合自己的架构。 讨论一个提升搜索性能的问题时,有些人思维定式,提出并行分段查询的方式,没有考虑实际(控制硬件投入)、不分析日志(80%在前2个分片已满足需求),结果是cpu上去了性能基本没有差异,最后还是通过优化的方式,把性能提升了2倍。下面对搜索中,并行分段查询的几种方式做了简单比...
2021-05-26 09:33:55 160
原创 unicode转中文工具
hbase中查到的中文是unicode编码,需要把unicode编码转换为中文。方法一:在线转换工具https://tool.chinaz.com/tools/unicode.aspx方法二:通过JSON Viewer浏览器插件转换
2021-05-25 14:40:16 1195
原创 jvm疯狂吞占内存
hadoop客户端启动不了几个程序,就报内存错误,分析发现java虚拟机虚拟内存占用比较大,物理内存占用较小,调整HADOOP_CLIENT_OPTS参数解决(java虚拟机一旦把内存分配出去,即使没有使用,内存也会被锁定)。HDFS的JVM参数配置文件: hadoop-env.shNamenode进程的JVM配置: HADOOP_NAMENODE_OPTSDatanode进程的JVM配置:HADOOP_DATANODE_OPTSclient命令行的JVM配置:HADOOP_CLI.
2021-05-24 21:39:40 165
转载 360搜索的百亿级网页搜索引擎架构实现
360搜索概况我先大概介绍一下目前360搜索的现状。目前360搜索每天抓取的网页大概是十亿级别的量级,现在已经收录的网页基本上是万亿级别的网页集合,实际可检索的网页是在一个百亿级别的网页集合里。目前360搜索的单日流量是一个亿级别的qps。我们目前的在线、离线机群有几万台服务器来维护这么大量级的计算。主要内容我今天的分享主要侧重于百亿级网站搜索引擎架构的一些核心模块的理论设计。本次分享内容分为以下四个模块:如何设计搜索引擎 百亿级网页计算关键技术 网页索引组织模...
2021-05-24 09:16:44 768
原创 faiss IndexLSH源码详解
在Faiss中,IndedLSH只是具有二进制编码的Flat索引。数据库向量和查询向量被哈希为二进制,并使用汉明距离进行比较。主要是把向量转换(例如降维、根据阈值相减等),转换完之后,按照bit把每个向量的每个维度写入codes中。在查询时,同样把query对应的向量转换为codes,然后计算query和索引codes的hammings距离。127 /*n:向量个数,x:向量,k:返回条数, distances:距离,labels:向量唯一标识*/128 void IndexLSH::s..
2021-05-20 15:48:32 699
原创 faiss 距离详解
目录距离对应的结构体理解L1,L2 范数cosine similarityHammi汉明距离参考:距离对应的结构体44 enum MetricType {45 METRIC_INNER_PRODUCT = 0, ///< maximum inner product search 向量内积46 METRIC_L2 = 1, ///< squared L2 search 定义了2种衡量相似度的方式,欧式距离...
2021-05-20 13:39:44 1835
原创 faiss hnsw 算法源码详解 - train
hnswlib 代码分析hnswlib 源码分析train过程说明 主要是生成hnsw模型 Hnsw中,storage中存储的原始的中心点向量 生成hnsw 为每层分配空间 每层的中心点在当前层及下面的每一层都有中心点,例如第n层在n、n-1、…1层都有临近点,第3层只在3、2、1层有临近点。 同一个临近点在各层的数据是连续存储在一起的。 新加入的数据在下面的各层查找对应的临近点的候选集,选出最后的临近点,然后建立link 调整其他临近点的link,因为临近..
2021-05-20 09:45:16 2499
原创 faiss IndexIVFPQ 源码详解 - train
69 /*n:向量个数, x:整个向量*/ 70 void IndexIVFPQ::train_residual_o (idx_t n, const float *x, float *residuals_2) 71 { 72 const float * x_in = x; 73 /*d:全空间维度*/ 74 x = fvecs_maybe_subsample ( 75 d, (size_t*)&n, pq.cp.ma...
2021-05-20 09:28:05 630
原创 faiss IndexIVFPQ 源码详解 - add过程
223 /*xids:外部指定的每个向量的唯一标识*/224 void IndexIVFPQ::add_core_o (idx_t n, const float * x, const idx_t *xids,225 float *residuals_2, const idx_t *precomputed_idx)226 {227228 idx_t bs = 32768;229 if (n &g...
2021-05-20 09:26:07 455
原创 faiss IndexFlat源码详解
IndexFlat原理比较简单,把add进来的原始向量,全部保存起来。在检索时,query向量和索引中的所有的原始向量求距离这种暴力批量的方式,性能非常差,效果是最好的。void IndexFlat::add (idx_t n, const float *x) { xb.insert(xb.end(), x, x + n * d); ntotal += n; ///所有向量}void IndexFlat::reset() { xb.clear();..
2021-05-14 07:23:41 934 1
原创 faiss - PQ(ProductQuantizer) 源码详解
PQ (Product Quantizer), 相对与普通的Quantizer而言普通Quantizer 将整个向量通过单次聚类达到量化。Product Quantizer 则通过对向量分段(这里的分段是针对向量本身的,例如128维的向量分为2个64维的向量),每段分别聚类得到多个量化结果(每段一个量化结果),这样的好处是同较小的码本来表达非常大量的码把256个128维的向量分为4段,每段有256个32维的向量,每段独立训练中心点,这样在查询时从每个段中选一个最近的中心点(可以采用排列组合的思想
2021-05-14 07:15:38 571
原创 faiss search(检索)截断
如果设置了最大编码个数之后,当达到最大时,后面的就不再遍历,这里的截断是针对二级量化器的聚类中心点的,针对一个中心点没有设置截断357 for (size_t ik = 0; ik < nprobe; ik++) {358359 nscan += scan_one_list (360 keys [i * nprobe + ik],361 coarse_dis[i * nprobe + ik],362 simi, idxi363 );364365 if (max_codes &a..
2021-05-14 07:00:28 1062
原创 kingso------framework 源码分析
kingso 阿里开源搜索引擎,framework 源码分析Command.cppCommandLine::run()Argsargs(argc,argv);_server=makeServer();_server->start(args.getConfPath());ini_load_from_file(path,&cfg);_taskQueue=new(std::nothrow)TaskQueue;initPara...
2021-05-13 19:51:03 143
原创 faiss 聚类算法详解(聚类算法源码解析)
聚类的步骤初始化中心点(因为聚类效果和初始中心点相关,容易出现局部最优,所以可以多初始化几次)。 根据中心点,计算每个向量到中心点的距离。 根据距离,把向量归属于不同的中心点 然后对中心点周围的向量,累加取平均形成新的中心点。 然后开始新一轮的聚类。 从多次聚类中,选择最优的中心点,训练完成。代码详解 for (int redo = 0; redo < nredo; redo++) { ///切换初始的中心点(避免局部最优), if (verbose &.
2021-05-13 19:45:27 1511
《MATLAB程序设计教程》电子教案-2660.rar
2010-01-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人