diff --git a/mllib/src/main/scala/org/apache/spark/ml/classification/LogisticRegression.scala b/mllib/src/main/scala/org/apache/spark/ml/classification/LogisticRegression.scala
index e157bdeb5b7ee5c044e0c6c3e6de25043506b040..4bab801bb3621743d18ffc1426105d5bae5e0111 100644
--- a/mllib/src/main/scala/org/apache/spark/ml/classification/LogisticRegression.scala
+++ b/mllib/src/main/scala/org/apache/spark/ml/classification/LogisticRegression.scala
@@ -424,6 +424,11 @@ class LogisticRegression @Since("1.2.0") (
           throw new SparkException(msg)
         }
 
+        if (!state.actuallyConverged) {
+          logWarning("LogisticRegression training fininshed but the result " +
+            s"is not converged because: ${state.convergedReason.get.reason}")
+        }
+
         /*
            The coefficients are trained in the scaled space; we're converting them back to
            the original space.
diff --git a/mllib/src/main/scala/org/apache/spark/ml/regression/AFTSurvivalRegression.scala b/mllib/src/main/scala/org/apache/spark/ml/regression/AFTSurvivalRegression.scala
index 7c51845a25815b1c96d4646b4a9114693c88a524..366448fc56bf5f288b9ca49dfb95fc91674b02e3 100644
--- a/mllib/src/main/scala/org/apache/spark/ml/regression/AFTSurvivalRegression.scala
+++ b/mllib/src/main/scala/org/apache/spark/ml/regression/AFTSurvivalRegression.scala
@@ -245,6 +245,11 @@ class AFTSurvivalRegression @Since("1.6.0") (@Since("1.6.0") override val uid: S
         throw new SparkException(msg)
       }
 
+      if (!state.actuallyConverged) {
+        logWarning("AFTSurvivalRegression training fininshed but the result " +
+          s"is not converged because: ${state.convergedReason.get.reason}")
+      }
+
       state.x.toArray.clone()
     }
 
diff --git a/mllib/src/main/scala/org/apache/spark/mllib/optimization/LBFGS.scala b/mllib/src/main/scala/org/apache/spark/mllib/optimization/LBFGS.scala
index ec6ffe6e1943910558ff8a39882fc09b16ca023b..c61b2db6c961c8b7f3104b8b4fd048373f013157 100644
--- a/mllib/src/main/scala/org/apache/spark/mllib/optimization/LBFGS.scala
+++ b/mllib/src/main/scala/org/apache/spark/mllib/optimization/LBFGS.scala
@@ -212,6 +212,12 @@ object LBFGS extends Logging {
       state = states.next()
     }
     lossHistory += state.value
+
+    if (!state.actuallyConverged) {
+      logWarning("LBFGS training fininshed but the result " +
+        s"is not converged because: ${state.convergedReason.get.reason}")
+    }
+
     val weights = Vectors.fromBreeze(state.x)
 
     val lossHistoryArray = lossHistory.result()