本文为您介绍ossfs 1.91.3版本更新内容。
新增功能
direct_read_backward_chunks参数
直读模式下,ossfs保留[当前chunk - 1, 当前chunk + direct_read_prefetch_chunks]
区间内的数据,当前读的位置之前只保留一个chunk的数据,如果用户向前跳跃读,则会丢弃大量已经预取的数据,有可能造成带宽与资源浪费,以及性能下降。
新增参数direct_read_backward_chunks,使ossfs保留[当前chunk - direct_read_backward_chunks, 当前chunk + direct_read_prefetch_chunks]
区间内的数据。在AI推理场景下,加载safetensors模型文件(随机读)时,通过调大direct_read_backward_chunks参数,能有更多的数据保留,减少数据重复下载,从而在一定程度上提升性能。
参数 | 说明 | 默认值 | |
direct_read_backward_chunks | 在直读模式下,保留当前读请求位置之前已下载的chunk数量,单位为个。1个chunk的默认大小为4 MB。 本次新增的参数。 | 1 | |
stat_cache_expire | 元数据过期时间,单位为秒。新支持设为-1,即永不过期。 失效后会重新加载缓存数据。 | 900 |
混合直读模式
在随机读频繁且跳跃范围较大的场景下:
直读模式的ossfs会频繁下载数据并丢弃,再重复下载,性能会受到很大影响。
默认模式的ossfs会将数据下载到磁盘上,在磁盘空间到达上限之前不会丢弃,因此无重复下载。
当文件不大时,下载的数据直接写到内存page cache中随后直接返回,不会受到磁盘性能限制。
当文件较大,page cache无法全部缓存之后,读性能受到磁盘性能制约。
混合直读模式兼具了默认落盘模式和纯直读模式的优势。小文件可以全部利用page cache加速,大文件可以充分利用page cache,超过一定上限之后才切换到直读模式,同样避免受到磁盘性能限制。
参数 | 说明 | 默认值 |
direct_read_local_file_cache_size_mb | 混合直读模式下,数据默认下载到磁盘上。当下载数据总量超过该值时,切换到直读模式,单位为MB。 | 0(等同直读模式) |
性能测试
利用ossfs将远程Bucket挂载至本地文件系统,再使用PyTorch加载文件来进行性能测试。测试结果如下:
机器规格
内存:15GB
磁盘带宽:150MB/s
内网带宽:500MB/s
挂载命令
默认模式ossfs挂载命令:
ossfs [bucket name] [mountpoint] -ourl=[endpoint] -oparallel_count=32 -omultipart_size=16
直读模式ossfs挂载命令:
ossfs [bucket name] [mountpoint] -ourl=[endpoint] -odirect_read -odirect_read_chunk_size=8 -odirect_read_prefetch_chunks=64 -odirect_read_backward_chunks=16
混合直读模式ossfs挂载命令:
ossfs [bucket name] [mountpoint] -ourl=[endpoint] -oparallel_count=32 -omultipart_size=16 -odirect_read -odirect_read_chunk_size=8 -odirect_read_prefetch_chunks=64 -odirect_read_backward_chunks=16 -odirect_read_local_file_cache_size_mb=3072
测试
测试脚本:
import time from safetensors.torch import load_file file_path = "./my_folder/bert.safetensors" start = time.perf_counter() loaded = load_file(file_path) end = time.perf_counter() elapsed = end - start print("time_spent:", elapsed)
测试结果:
说明测试结果仅供参考,实际读的耗时除了和文件大小有关,也和safetensors模型结构本身有关。
文件大小
默认模式
直读模式
混合直读模式
2.0 GB
4.00s
5.86s
3.94s
5.3 GB
20.54s
27.33s
19.91s
6.5 GB
30.14s
24.23s
17.93s