データセットには 5000000 行あり、データセットに「embeddings」という列を追加したいと思います。
dataset = dataset.add_column('embeddings', embeddings)
変数embeddingsは、サイズ(5000000、512)のnumpy memmap配列です。
しかし、私はこのエラーが発生します:
ArrowInvalidTraceback (最近の呼び出しが最後) ----> 1 データセット = dataset.add_column('embeddings', 埋め込み)
/opt/conda/lib/python3.8/site-packages/datasets/arrow_dataset.py in wrapper(*args, **kwargs) 486 } 487 # 実際の関数を適用 --> 488 out: Union["Dataset", " DatasetDict"] = func(self, *args, **kwargs) 489 datasets: List["Dataset"] = list(out.values()) if isinstance(out, dict) else [out] 490 # フォーマットを再適用出力へ
/opt/conda/lib/python3.8/site-packages/datasets/fingerprint.py in wrapper(*args, **kwargs) 404 # 実際の関数を呼び出す 405 --> 406 out = func(self, *args, * *kwargs) 407 408 # インプレース変換のフィンガープリントを更新 + 変換のインプレース履歴を更新
/opt/conda/lib/python3.8/site-packages/datasets/arrow_dataset.py in add_column(self, name, column, new_fingerprint) 3346 :class:
Dataset
3347 """ -> 3348 column_table = InMemoryTable.from_pydict({name : column}) 3349 # テーブルを水平に連結 3350 table = ConcatenationTable.from_tables([self._data, column_table], axis=1)/opt/conda/lib/python3.8/site-packages/datasets/table.py in from_pydict(cls, *args, **kwargs) 367 @classmethod 368 def from_pydict(cls, *args, **kwargs): - -> 369 リターン cls(pa.Table.from_pydict(*args, **kwargs)) 370 371 @inject_arrow_table_documentation(pa.Table.from_batches)
/opt/conda/lib/python3.8/site-packages/pyarrow/table.pxi in pyarrow.lib.Table.from_pydict()
/opt/conda/lib/python3.8/site-packages/pyarrow/table.pxi in pyarrow.lib._from_pydict()
/opt/conda/lib/python3.8/site-packages/pyarrow/array.pxi in pyarrow.lib.asarray()
/opt/conda/lib/python3.8/site-packages/pyarrow/array.pxi in pyarrow.lib.array()
/opt/conda/lib/python3.8/site-packages/pyarrow/array.pxi in pyarrow.lib._ndarray_to_array()
/opt/conda/lib/python3.8/site-packages/pyarrow/error.pxi in pyarrow.lib.check_status()
ArrowInvalid: 1 次元配列のみを処理します
埋め込み配列がRAMに収まらないため、おそらく効率的な方法で解決するにはどうすればよいですか?