Facebookが開発した高速データ圧縮アルゴリズムZstdの使い方

Facebookが開発した高速データ圧縮アルゴリズムZstdの使い方

[51CTO.com クイック翻訳] Zstandard (Zstd とも呼ばれる) は、Facebook が開発した、圧縮率の高い無料のオープンソースの高速リアルタイム データ圧縮プログラムです。これは C で記述されたロスレス圧縮アルゴリズムなので、ネイティブの Linux プログラムです。

必要に応じて、圧縮速度を犠牲にしてより高い圧縮率を得ることもできます (圧縮速度と圧縮率の組み合わせは段階的に設定できます)。また、その逆も可能です。辞書圧縮と呼ばれる小さなデータ圧縮用の特別なモードがあり、提供された任意のサンプル セットから辞書を構築できます。 .zst、.gz、.xz、.lz4 ファイルなどを作成およびデコードするためのコマンド ライン ユーティリティが付属しています。

重要なのは、Zstandard には、Python、Java、JavaScript、Nodejs、Perl、Ruby、C#、Go、Rust、PHP、Swift など、ほぼすべての一般的なプログラミング言語をサポートする豊富な API セットがあることです。

Facebook では、Amazon の Redshift データ ウェアハウス、Hadoop や Redis などのデータベース、Tor ネットワーク、ゲームなどの他の多くのアプリケーションなどのさまざまなユース ケースで、大量のデータを複数の形式で圧縮するために積極的に使用されています。

オープンソースのメモリベンチマークツールである lzbench を使用して、Linux Debian を実行しているサーバー上でいくつかの簡単な圧縮アルゴリズムテストを実行しました。結果は次のとおりです。

Z標準圧縮テスト

Linux に Zstandard 圧縮ツールをインストールするにはどうすればいいですか?

Linux ディストリビューションに Zstandard をインストールするには、ソース コードからコンパイルする必要があります。ただし、その前に、次のように、ディストリビューションのパッケージ マネージャーを使用して、システムに必要な開発ツールをインストールする必要があります。

  1. $ sudo apt update && sudo apt install build-essential #Ubuntu/Debian  
  2. # yumグループインストール「開発ツール」 #CentOS/REHL  
  3. # dnf groupinstall "C 開発ツールとライブラリ" #Fedora 22+

必要な開発ツールがすべてインストールされたら、ソース コード パッケージをダウンロードし、ローカル リポジトリ ディレクトリに移動して、バイナリ ファイルをビルドし、次のようにインストールします。

  1. $ cd ~/ダウンロード 
  2. $ gitクローン https://github.com/facebook/zstd.git  
  3. $ cd zstd  
  4. $ 作る 
  5. $ sudo インストール

Zstandard がインストールされたら、次のセクションで Zstd コマンド例の基本的な使用方法を学習していきます。

Linux での Zstd コマンドの使用例 10 個を学ぶ

zstd のコマンドライン構文は、gzip ツールや xz ツールの構文と一般的に似ていますが、いくつかの違いがあります。

1. .zst 圧縮ファイルを作成するには、圧縮ファイル名を指定するか、デフォルトの操作である圧縮を意味する -z フラグを使用します。

  1. $ zstd エッチャー-1.3.1-x86_64.AppImage

または

  1. $ zstd -z etcher-1.3.1-x86_64.AppImage

2. .zst 圧縮ファイルを解凍するには、次に示すように -d フラグまたは unzstd ユーティリティを使用します。

  1. $ zstd -d エッチャー-1.3.1-x86_64.AppImage

または

  1. $ unzstd etcher-1.3.1-x86_64.AppImage

3. 圧縮操作後にソース ファイルを削除する場合、デフォルトでは、圧縮または解凍が成功した後もソース ファイルは削除されません。削除する場合は、--rm オプションを使用します。

  1. $ ls etcher-1.3.1-x86_64.AppImage  
  2. $ zstd --rm etcher-1.3.1-x86_64.AppImage    
  3. $ ls etcher-1.3.1-x86_64.AppImage

4. 圧縮レベルを設定するために、Zstd には多くの操作修飾子があります。たとえば、次に示すように、圧縮レベルを -6 (値 1 ~ 19、デフォルト値は 3) に指定できます。

  1. $ zstd -6 --rm etcher-1.3.1-x86_64.AppImage  

5. 圧縮速度を設定する場合、Zstd の圧縮速度比は 1 ~ 10 で、デフォルトの圧縮速度は 1 です。 --fast オプションを使用すると、圧縮率を犠牲にして圧縮速度を上げることができます。値が大きいほど、圧縮速度が速くなります。

  1. $ zstd --fast=10 etcher-1.3.1-x86_64.AppImage  

6. 圧縮ファイルに関する情報を表示するには、-l フラグを使用します。これを使用して、圧縮ファイルに関する情報を表示できます。

  1. $ zstd -l エッチャー-1.3.1-x86_64.AppImage.zst

7. 圧縮ファイルの整合性をテストするには、次に示すように -t フラグを使用します。

  1. $ zstd -t エッチャー-1.3.1-x86_64.AppImage.zst

8. 詳細モードを有効にするには、-v オプションを使用します。

  1. $ zstd -v -5 etcher-1.3.1-x86_64.AppImage

9. gzip、xz、lzma、lz4 などの他のファイル圧縮または解凍形式を使用するには、以下に示すように --format=FORMAT を使用します。

  1. $ zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage    
  2. $ zstd -v --format=xz etcher-1.3.1-x86_64.AppImage  

10. Zstd プロセスの優先度をリアルタイムに設定するには、次に示すようにオプション -priority=rt を使用します。

  1. $zstd --priority=rt etcher-1.3.1-x86_64.AppImage  

-r フラグは、Zstd に辞書に対して再帰操作を実行するように指示します。 Zstd リファレンス ページを参照すると、多くの便利な高度なオプションや、辞書の読み取り方法や作成方法がわかります。

  1. $ 男 zstd  
  2. Zstandard Githubリポジトリ: https://github.com/facebook/zstd

Zstandard は、高い圧縮率を実現する高速リアルタイムロスレス データ圧縮アルゴリズムおよび圧縮ツールです。ぜひお試しいただき、ご意見をお聞かせください。また、下のフィードバック フォームからご質問ください。

原題: zstd – Facebook が使用する高速データ圧縮アルゴリズム、著者: Aaron Kili

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください]

<<:  人工知能は耳の画像だけで年齢と性別を正確に判別できる

>>:  シティグループは5年以内に1万人の雇用を人工知能で置き換える計画

ブログ    
ブログ    

推薦する

中国のAI研究は米国を上回る?専門家:例えば、ディープラーニングに関する論文の発表数

現在、世界の人工知能分野には、業界で「神のような存在」とみなされるトップの専門家が3人いる。そのうち...

AR/AIバーチャル試着室は社会的距離の確保対策への対応

COVID-19 は小売業界に大きな混乱をもたらしましたが、新しいテクノロジーはこれまで以上に重要な...

人工知能は中国の製造業にどのような変化をもたらすのでしょうか?

[[260379]]データマップ:中国航空宇宙科学産業集団第三科学院第35研究所が開発に成功した新...

AIがセキュリティの自動化、分析、対応にどのように役立つか

人工知能 (AI) は、チャットボットから自動運転車まで、あらゆるものを説明するために使用できる幅広...

自動運転が何千もの家庭に普及するまでにどれくらいの時間がかかるのでしょうか?

2019年9月に百度、海亮科技、センスタイムなどの企業が世界初の自動運転車の商用ライセンスを取得し...

AlibabaのBladeDISCディープラーニングコンパイラが正式にオープンソース化

ガイドディープラーニングの継続的な発展により、AI モデルの構造は急速に進化しており、基盤となるコン...

Pythonとdlibを使用した顔検出

「Dlib は、高度なソフトウェアを作成するための機械学習アルゴリズムとツールの最新の C++ ツー...

AIによる教育革命:自己主導型およびガイド型適応型学習の包括的分析

適応型学習は、人工知能などの高度なテクノロジーを活用して、パーソナライズされた学習体験を生み出す教育...

...

機械学習プロジェクトにおける特徴エンジニアリングの 5 つのベスト プラクティス

私たちは長年にわたり、機械学習プロジェクトで何が機能し、何が機能しないかを特定するために、さまざまな...

...

MITの人工知能研究室で1年間働いて学んだ5つのこと

Mike Ferguson は、MIT 脳認知科学部 (MIT BCS) の研究ソフトウェア エンジ...