mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	check for nans in imatrix and quantize (#7807)
* imatrix : detect nan/inf values * quantize : check imatrix for nan/inf values
This commit is contained in:
		| @@ -151,6 +151,10 @@ bool IMatrixCollector::collect_imatrix(struct ggml_tensor * t, bool ask, void * | ||||
|                     for (int j = 0; j < (int)src1->ne[0]; ++j) { | ||||
|                         e.values[e_start + j] += x[j]*x[j]; | ||||
|                         e.counts[e_start + j]++; | ||||
|                         if (!std::isfinite(e.values[e_start + j])) { | ||||
|                             fprintf(stderr, "%f detected in %s\n", e.values[e_start + j], wname.c_str()); | ||||
|                             exit(1); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| @@ -183,6 +187,10 @@ bool IMatrixCollector::collect_imatrix(struct ggml_tensor * t, bool ask, void * | ||||
|             for (int j = 0; j < (int)src1->ne[0]; ++j) { | ||||
|                 e.values[j] += x[j]*x[j]; | ||||
|                 e.counts[j]++; | ||||
|                 if (!std::isfinite(e.values[j])) { | ||||
|                     fprintf(stderr, "%f detected in %s\n", e.values[j], wname.c_str()); | ||||
|                     exit(1); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if (e.ncall > m_last_call) { | ||||
|   | ||||
| @@ -15237,6 +15237,14 @@ static void llama_model_quantize_internal(const std::string & fname_inp, const s | ||||
|         if (imatrix_data) { | ||||
|             LLAMA_LOG_INFO("================================ Have weights data with %d entries\n",int(imatrix_data->size())); | ||||
|             qs.has_imatrix = true; | ||||
|             // check imatrix for nans or infs | ||||
|             for (const auto & kv : *imatrix_data) { | ||||
|                 for (float f : kv.second) { | ||||
|                     if (!std::isfinite(f)) { | ||||
|                         throw std::runtime_error(format("imatrix contains non-finite value %f\n", f)); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 slaren
					slaren