Tôi đang lắp một mô hình LDA với nhiều dữ liệu bằng cách sử dụng tính năng tìm hiểu. Có liên quan đang mảnh trông như thế này:Lỗi "Không có dấu cách trên thiết bị" khi lắp mô hình Sklearn
lda = LatentDirichletAllocation(n_topics = n_topics,
max_iter = iters,
learning_method = 'online',
learning_offset = offset,
random_state = 0,
evaluate_every = 5,
n_jobs = 3,
verbose = 0)
lda.fit(X)
(Tôi đoán các chi tiết chỉ có thể liên quan ở đây là tôi đang sử dụng nhiều công ăn việc làm.)
Sau một thời gian tôi nhận được "Không gian còn lại trên thiết bị "lỗi, mặc dù có rất nhiều không gian trên đĩa và nhiều bộ nhớ trống. Tôi đã thử mã giống nhau nhiều lần, trên hai máy tính khác nhau (trên máy cục bộ của tôi và trên máy chủ từ xa), trước tiên sử dụng python3, sau đó sử dụng python2 và mỗi lần tôi kết thúc với cùng một lỗi.
Nếu tôi chạy cùng một mã trên một mẫu dữ liệu nhỏ hơn thì mọi thứ hoạt động tốt.
Toàn bộ stack trace:
Failed to save <type 'numpy.ndarray'> to .npy file:
Traceback (most recent call last):
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 271, in save
obj, filename = self._write_array(obj, filename)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 231, in _write_array
self.np.save(filename, array)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.py", line 491, in save
pickle_kwargs=pickle_kwargs)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/format.py", line 584, in write_array
array.tofile(fp)
IOError: 275500 requested and 210934 written
IOErrorTraceback (most recent call last)
<ipython-input-7-6af7e7c9845f> in <module>()
7 n_jobs = 3,
8 verbose = 0)
----> 9 lda.fit(X)
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in fit(self, X, y)
509 for idx_slice in gen_batches(n_samples, batch_size):
510 self._em_step(X[idx_slice, :], total_samples=n_samples,
--> 511 batch_update=False, parallel=parallel)
512 else:
513 # batch update
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in _em_step(self, X, total_samples, batch_update, parallel)
403 # E-step
404 _, suff_stats = self._e_step(X, cal_sstats=True, random_init=True,
--> 405 parallel=parallel)
406
407 # M-step
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in _e_step(self, X, cal_sstats, random_init, parallel)
356 self.mean_change_tol, cal_sstats,
357 random_state)
--> 358 for idx_slice in gen_even_slices(X.shape[0], n_jobs))
359
360 # merge result
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in __call__(self, iterable)
808 # consumption.
809 self._iterating = False
--> 810 self.retrieve()
811 # Make sure that we get a last message telling us we are done
812 elapsed_time = time.time() - self._start_time
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in retrieve(self)
725 job = self._jobs.pop(0)
726 try:
--> 727 self._output.extend(job.get())
728 except tuple(self.exceptions) as exception:
729 # Stop dispatching any new job in the async callback thread
/home/ubuntu/anaconda2/lib/python2.7/multiprocessing/pool.pyc in get(self, timeout)
565 return self._value
566 else:
--> 567 raise self._value
568
569 def _set(self, i, obj):
IOError: [Errno 28] No space left on device
Có thể nó sẽ hoạt động mà không cần đa xử lý ('' 'n_jobs = 1'''). Tôi không chắc chắn, con đường mà scikit-learning đang sử dụng cho một số dữ liệu tạm thời. Phân vùng tmp của bạn lớn đến mức nào? – sascha
Cảm ơn @sascha, tôi sẽ thử chỉ với một quy trình. Nếu 'tmpfs' là phân vùng tmp (tôi nghĩ nó là?) Thì nó là 1.6GB. Đây có phải là vấn đề không? Nếu vậy, có cách giải quyết nào cho vấn đề này không? – machaerus